通过单个SQL查询一次搜索多行

时间:2012-01-09 09:42:01

标签: sql database

我有一张表,其数据是这样的。

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。

(我没有选择编写两个查询,然后找到两个集合的公共元素。)

非常感谢提前

4 个答案:

答案 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

试试这里:
http://data.stackexchange.com/stackoverflow/q/123711/

答案 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)