2016-08-26 42 views
0

我有一個sql表,名爲TagQuestion,它有id,tagId,questionId等字段。對同一列的MySQL AND運算符

下面是出現在表中的數據:

+---------------------+ 
|id |tagId |QuestionId| 
+---------------------+  
|2 |1  |2   | 
|4 |1  |3   | 
|6 |2  |3   | 
+---------------------+ 

我想從表questionIds爲其tagId=1以及tagId=2

我試圖查詢作爲 -

select * from TagQuestion where (tagId=1 AND tagId=2) 

但它沒有返回任何東西。

能否請您幫我出這個

+0

什麼是您的確切預期結果?只是「3」? –

+0

該查詢返回任何內容,因爲它的邏輯錯誤。你能說出一個同時滿足number = 1和number = 2的數字嗎? – Mak

回答

1

你應該嘗試:

SELECT * FROM TagQuestion WHERE tagId IN (1,2);

查詢where (tagId = 1 and tagId = 2)檢查是否有tagId在每行時間1倍2的值..所以它不會輸出任何東西總是會是錯誤的..另一種選擇是將AND替換爲OR

2

一個簡單的方法來獲得這樣的問題是使用group byhaving

select questionId 
from TagQuestion 
where tagId in (1, 2) 
group by questionId 
having count(distinct tagId) = 2; 
+0

謝謝。有效:) – Poonam

0

嘗試此查詢:

select * from TagQuestion where tagId IN (1,2) 

您的查詢檢查是否tagId=1 AND tagId=2這是不可能相同的記錄。要獲取具有tagId=1tagId=2的記錄,您需要使用IN運算符。

0

你聲稱列應爲1 2在同一時間 - 按照邏輯(Boolean Algebra)法律這始終是 - 因此它總是返回0行。

我想你打算返回其中列標籤識別包含1 2行,如果是這樣的話,通過OR更換的AND在查詢

select * from TagQuestion where (tagId=1ORtagId=2)