簡體   English   中英

SQL - 選擇適用於多行的 WHERE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM