2015-05-14 197 views
0

嗨那裏我試圖執行一個查詢,但似乎無法做到正確。SQL select語句在where子句中

SELECT * 
FROM table 
WHERE id IN (SELECT * 
       FROM table 
       WHERE description = 'A') 
AND description = 'B' 

上面就是我有查詢時,select * from table where description = A按預期工作當單獨跑我只是需要讓where子句來工作,所以我可以看到,有A和B

的說明,任何ID
+1

描述不能同時'A'和'B'。只是'A'或'B'。 – Darian

+0

問題是可能有多個相同ID的記錄,並且它們可能包含A或B的描述,所以嵌套的select語句只能找到具有A描述的id,然後我想要這些id並找到多少他們也有B的描述。我認爲@SimonPJ解決方案應該爲我做這個? – user3456401

+0

好的,我明白了。我雖然身份證是獨一無二的。我認爲@SimonPJ解決方案是正確的答案。 – Darian

回答

3

你會從子查詢中獲得多個列時,我以爲你只是想在id列:

SELECT * 
FROM table 
WHERE id IN (SELECT id 
      FROM table 
      WHERE description = 'A') 
    AND description = 'B' 
+0

這似乎正是我所追求的!非常感謝 – user3456401

2

無需選擇在where子句中

SELECT * 
FROM table 
WHERE id IN ('A', 'B') 
+0

我認爲,OP的查詢將獲取映射到'A'和'B'的'id'。但在你的情況下,它將獲取映射到'A'或'B'的ID。該查詢中的錯誤是子查詢中的select *'。 –

0

它應該是:

select * from table where id in (select id from table where description = 'A') and description = 'B' 

但此查詢會給你零結果作爲選擇的記錄與描述=「A」和描述=「B」,如果你想用的任何描述記錄A或B,那麼你應該寫爲

select * from table where description = 'A' or description = 'B' 

select * from table where description in ('A','B') 
2

試試這個:

SELECT * 
FROM table 
WHERE description IN ('A', 'B')