我有一个查询,我在使用SelfJoin检查表中的重复记录。
Table1:
column1 column2 column3
data1 data2 data3
data1 data2 data3
我写了下面的查询,在上述情况下工作正常,并给出了所需的结果。
SELECT *
FROM table1(nolock) A
INNER JOIN
(SELECT column1,
column2,
column3
FROM table1(nolock)
GROUP BY column1,
column2,
column3
HAVING count(1) > 1) B ON A.column1 = B.column1
AND A.column2 = B.column2
AND A.column3 = B.column3
但我的另一种情况就像一个列值包含为" ALL"应该被视为与其他数据相同。
Table1:
column1 column2 column3
data1 data2 ALL
data1 data2 data3
在上表中,column3有一个值为" ALL"。在这种情况下,我也想显示重复的记录。 如果其中一个列值为" ALL",请帮我修改上面的SQL以显示重复记录。 提前致谢
答案 0 :(得分:0)
你是说这个吗?
SELECT t1.column1,
t1.column2,
t1.column3
FROM table1 t1 join table2 t2
on (t1.column1 = 'all' or t2.column1 = 'all' or t1.column1 = t2.column1) and
(t1.column2 = 'all' or t2.column2 = 'all' or t1.column2 = t2.column2) and
(t1.column3 = 'all' or t2.column3 = 'all' or t1.column3 = t2.column3)
group by t1.column1,
t1.column2,
t1.column3
having count(*) > 1