我在了解SQL方面迈出了一步。 现在我有一个问题,希望您能帮助我。
我想在一个表上进行选择,该表向我显示了多次可用的所有记录(使用不同的拼写) 喜欢: abcd123和ABCD123和ABcd123 ...
db2 "select * from table where row in (select row from table GROUP BY row HAVING (COUNT(row) > 1)) order by row"
例如:
db2 "select * from table where surname in (select surname from table GROUP BY surname HAVING (COUNT(surname) > 1)) order by surname"
上面的代码向我展示了可以在相同的拼写(例如SMITH AND SMITH AND SMITH)中多次使用的记录,但是在不同的拼写(例如SMITH AND Smith和Smith和Smith和Smith和Smith)中却可以使用
请帮助我。 (我无法加入JOINS。实际上不是我所知)
感谢帮助。
答案 0 :(得分:1)
如果您唯一关心的是大写字母,请使用lower()
或upper()
:
select t.*
from table
where lower(t.surname) in (select lower(t2.surname)
from table t2
group by lower(surname)
having count(*) > 1
)
order by surname;
如果您担心其他潜在的拼写错误,那么问题就很复杂了。
答案 1 :(得分:0)
尝试将UPPER()
函数添加到比较中
select * from table
where UPPER(surname) in (
select UPPER(surname) from table
GROUP BY UPPER(surname)
HAVING (COUNT(*) > 1)
) order by surname