我对如何编写此查询甚至如何解释它感到茫然 - 基本上我正在尝试将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)
答案 0 :(得分:3)
尝试这个简单的改变
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105)
or (QuestionID=1200 and AnswerID=1205)
or (QuestionID=1300 and AnswerID=1305)
答案 1 :(得分:3)
根据问题的编写方式(我不确定反映你真正想要的是什么,你自己承认...)我认为你想要的是:
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)
答案 2 :(得分:1)
我并不是真的关注你,但我认为你想要这样的事情:
select DISTINCT RuleID FROM table
where QuestionID IN (values)
您还可以在IN caluse中插入另一个选择:
select DISTINCT RuleID FROM table
where QuestionId in (SELECT ...)
答案 3 :(得分:1)
select DISTINCT RuleID FROM table
where (QuestionID=1100 and AnswerID=1105
or (QuestionID=1200 and AnswerID=1205)
or (QuestionID=1300 and AnswerID=1305)
或者我错过了什么?
答案 4 :(得分:1)
这是你要找的东西
SELECT DISTINCT RuleID
FROM table
WHERE QuestionID IN (1100,1200,1300)