2016-04-27 79 views
-1

我有两个表SQL服务器:与选择的情况下选择语句嵌套

  • 表1中,列:A,B,C
  • 表2中,列:A,d,E

我想从表1中选择全部,并添加一个附加字段。

如果在table_2.A中存在字符串列table_1.A的内容,则为TRUE,否则为FALSE。

我很想告诉你我试过的东西,但没有什么可以接近。我可以用SELECT CASE语句来做到这一点,但我无法弄清楚如何同时选择全部。

感谢

+0

你的意思是,如果Table1.A的文本是Table2.A的文本任何你想要的字“真”或你想从表2的东西包括在内? – n8wrl

+0

是的,我不需要表2中的任何东西。我已经标记了适合我的答案。 考虑它是这样的:表1 =产品清单和表格2 =清单清单。所以这个查询会给股票的任何东西一个TRUE,并且对任何股票都是FALSE。希望这是有道理的。 – stevo22

回答

1

使用CASE

SELECT 
    table1.A, 
    table1.B, 
    table1.C, 
    CASE WHEN table2.A IS NULL THEN 'FALSE' ELSE 'TRUE' END 
FROM 
    table1 
LEFT OUTER JOIN 
    table2 
ON table1.A = table2.A 
+0

这可能是接近,但让我更新的问题。它永远不会是空的,它只是不会存在..所以如果table1.a不在table2.a然后false ..我相信这个查询总是会返回TRUE,是正确的吗? – stevo22

+1

@ stevo22:他知道table2.a永远不会为空 - 但如果没有匹配,他的表达式将为NULL。我也在做同样的事情。 – n8wrl

+0

太棒了!让我试试看。 – stevo22

1
SELECT T1.*, IIF(T2.D IS NULL, 'FALSE', 'TRUE') 
    FROM Table1 T1 
    LEFT JOIN Table2 T2 ON T2.A LIKE '%' + T1.A + '%' 
+0

这也完成了我想要的,但花了很长时间。我假设它是因为喜欢。 (在这里处理大量数据)。谢谢你的回答 – stevo22

+0

你 - 喜欢结果在一个表扫描,所以如果你有很多行... – n8wrl

0

你需要一个左外连接并使用的情况下比较这两个表时columnab不为空,那么真,否则返回false尝试

0

这在Table1中每个记录只会有一行。

SELECT Table1.*, 
     ISNULL([Found],'False') [Found] 
FROM Table1 
     OUTER APPLY (
      SELECT TOP 1 
        'True' AS [Found] 
      FROM Table2 
      WHERE Table2.A LIKE '%' + Table1.A + '%' 
     )