2016-04-27 74 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 + '%' 
     )