[英]SQL - Selecting with WHERE that applies to multiple rows
我不知道如何編寫這個查詢,甚至如何解釋它——基本上我試圖讓 WHERE 子句應用於多行。
我有一張這樣的桌子:
RuleID QuestionID AnswerID
=================================
1 1100 1105
1 1200 1205
1 1300 1305
2 1100 1105
2 1200 1206
2 1300 1305
我想知道如何獲得所有具有特定問題/答案的唯一 RuleID。
例如,類似這樣的事情,但顯然這不會返回任何結果,因為它正在檢查同一行上的每個 where 子句。
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105)
and (QuestionID=1200 and AnswerID=1205)
and (QuestionID=1300 and AnswerID=1305)
試試這個簡單的改變
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105)
or (QuestionID=1200 and AnswerID=1205)
or (QuestionID=1300 and AnswerID=1305)
根據問題的編寫方式(我不確定這是否反映了你“真正”想要的,你自己承認......)我認為你想要的是:
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105)
OR (QuestionID=1200 and AnswerID=1205)
OR (QuestionID=1300 and AnswerID=1305)
如果這不起作用,請澄清。
[編輯] 其他人也抓住了“OR”選項,除此之外,我注意到您可能能夠利用的模式。 所有 'answerID' 是否都以他們的 'questionID' 為范圍? (問題 XX00 的可用答案是 XX01、XX02、...XX99)。 如果是這種情況,那么您可以從 where 子句中刪除 questionID,因為 AnswerID 可以假定該值。 這可以允許您使用 IN 子句,例如:
select DISTINCT RuleID FROM table
where AnswerID IN (1105,1205,1305)
我並沒有真正關注你,但我認為你想要這樣的東西:
select DISTINCT RuleID FROM table
where QuestionID IN (values)
您還可以在 IN caluse 中插入另一個 select :
select DISTINCT RuleID FROM table
where QuestionId in (SELECT ...)
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105
or (QuestionID=1200 and AnswerID=1205)
or (QuestionID=1300 and AnswerID=1305)
還是我錯過了什么?
這是你要找的東西嗎
SELECT DISTINCT RuleID
FROM table
WHERE QuestionID IN (1100,1200,1300)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.