选择行考虑跟随表具有2列相等值
C1 || C2 || C3 || C4
--------------------------
1 || a || b || 1
2 || a || b || 4
3 || b || d || 2
4 || b || d || 2
问题1:选择列C2,C3,C4具有相同的值例如所有行在上面的例子中选择第3行和第4行。
问题2:选择所有C4列中有重复的行,例如, C4拥有价值2在3行和第4行,所以选择行3和4
选择行考虑跟随表具有2列相等值
C1 || C2 || C3 || C4
--------------------------
1 || a || b || 1
2 || a || b || 4
3 || b || d || 2
4 || b || d || 2
问题1:选择列C2,C3,C4具有相同的值例如所有行在上面的例子中选择第3行和第4行。
问题2:选择所有C4列中有重复的行,例如, C4拥有价值2在3行和第4行,所以选择行3和4
问题1查询:
SELECT ta.C1
,ta.C2
,ta.C3
,ta.C4
FROM [TableA] ta
WHERE (SELECT COUNT(*)
FROM [TableA] ta2
WHERE ta.C2=ta2.C2
AND ta.C3=ta2.C3
AND ta.C4=ta2.C4)>1
select * from test;
a1 a2 a3
1 1 2
1 2 2
2 1 2
select t1.a3 from test t1, test t2 where t1.a1 = t2.a1 and t2.a2 = t1.a2 and t1.a1 = t2.a2
a3
1
你可以尝试使用同样的事情加盟太..
@DownVoter:为了简单起见,我使用3列进行了解释,并且我回答了问题1,请解释发生了什么问题? – Kracekumar
我没有投票,但您的查询不起作用。尝试使用提供的示例数据。它将需要只返回第3和第4行。 –
即使我没有投票。谢谢你试一试。首先回答为我工作。 – Rohit
select t.* from table t
join (
select C2, C3, C4
from table
group by C2, C3, C4
having count(*) > 1
) t2
using (C2, C3, C4);
其实这会走得更快在大多数情况下:
SELECT *
FROM table ta1
JOIN table ta2 on ta1.id != ta2.id
WHERE ta1.c2 = ta2.c2 and ta1.c3 = ta2.c3 and ta1.c4 = ta2.c4
呦你加入具有相同值的不同行。我认为它应该工作。如我错了请纠正我。
Select * from tablename t1, tablename t2, tablename t3
where t1.C1 = t2.c2 and t2.c2 = t3.c3
看起来像这样会工作。虽然似乎不是一种有效的方式。
SELECT *
FROM my_table
WHERE column_a <=> column_b AND column_a <=> column_c
我可以证实这是有效的。 – aalaap
您需要删除C1上的谓词,因为它似乎是唯一的ID。 –
好点@ a'r,欢呼 – Curt
谢谢,它完美地工作 – Rohit