我有一张表,其数据是这样的。
A B C
---------
0 6 2
0 3 4
1 0 2
1 1 4
我写了一个SQL查询 -
select A
from Table
where (B = 6 and C = 2) AND (B = 3 and C = 4).
显然它返回零结果,因为此查询将在同一行中搜索。请帮助我编写一个更好的结果,以便它可以用一个语句检查两行。
编辑: 我不是在寻找'或'的声明。我需要找到A的元素,使其具有两个相应的行,并且每个行的元素6,2和3,4相应地存在于列B,C中。
PS。
(我没有选择编写两个查询,然后找到两个集合的公共元素。)
非常感谢提前
答案 0 :(得分:2)
使用 OR 代替 AND
select A from Table where (B=6 and C=2) OR (B=3 and C=4).
如果您想要onlu结果,请使用DISTINCT
select DISTINCT A from Table where (B=6 and C=2) OR (B=3 and C=4).
如果您需要检查A的相等性,请使用:
select t1.A
from Table t1
JOIN Table t2 ON t1.A = t2.A
where T1.B=6 and t1.C=2 AND t2.B=3 and t2.C=4
如您所见 - 再次使用 AND
答案 1 :(得分:2)
我想你想要这样的东西
select A
from YourTable
where (B = 6 and C = 2) or
(B = 3 and C = 4)
group by A
having count(distinct B) >= 2
答案 2 :(得分:1)
你想要这个吗?
SELECT A
FROM Table
WHERE (B = 6 AND C = 2) OR (B = 3 AND C = 4)
这将再次返回所有四行的A
列。
如果不是: 你到底想要选择什么?
如果您只想要两行,一行A = 0
,一行A = 1
,则使用DISTINCT
:
SELECT DISTINCT A
FROM Table
WHERE (B = 6 AND C = 2) OR (B = 3 AND C = 4)
答案 3 :(得分:1)
也许:
select A
from Table
where (B = 6 and C = 2)
INTERSECT
select A
from Table
(B = 3 and C = 4)