工会在同一张桌子上

时间:2010-06-03 10:45:50

标签: sql union

我有一张桌子:

ID | Id1 | Id2
1  | 100 | 12
2  | 196 | 140
3  | 196 | 141
4  | 150 | 140
5  | 150 | 199

我想写一个查询,它会给我一个包含ID2相同且id1等于196或150的记录的表。 我想到了联盟:

从表中选择*,其中ID1 = 196    联盟    从表中选择*,其中ID1 = 150

但这不包括ID2要求。 我该怎么做?

4 个答案:

答案 0 :(得分:1)

如果我理解你的问题,那么这应该是答案:

select * from mytable where id2 in
(select id2 from mytable
group by id2
having count(*)>=2)
and (id1=196 or id1=150)

答案 1 :(得分:0)

你为什么要做union

您可以使用in完成相同的任务。

SELECT * FROM Table WHERE Id1 IN (196, 150) OR Id2 IN (196, 150)

答案 2 :(得分:0)

SELECT ID
FROm yourTable as table1
INNER JOIN yourTable as table2
ON table1.Id2 = table2.Id2
WHERE table1.id1 IN (196.150)

我们走了

答案 3 :(得分:0)

您可以将表格加入自身

 select T1.* from Mytable T1 inner join MyTable T2 
 ON T1.ID2 = T2.ID2
 AND T1.ID1 in (196, 150)

类似的东西,根据您的确切要求和表格结构,您可能需要做更多的工作以避免重复的条目。