在我的表格中,我有以下栏目:
id|name|gender
我想提取所有重复的名称,但我不想扫描所有的数据库来逐个统计每个记录......我只是想知道谁有相同的名字...... 例如:
0|mary|F
1|tom|M
2|peter|M
3|mary|F
4|chris|M
5|chris|F
6|alex|M
我只想得到:玛丽和克里斯...... 但我不想立刻阅读所有记录......任何想法?谢谢。
答案 0 :(得分:7)
SELECT
name
FROM
Mytable
GROUP BY
name
HAVING
COUNT(*) > 1
要分隔性别,请将GROUP BY更改为name, gender
删除重复的行
DELETE MyTable
WHERE ID NOT IN
(
SELECT
MIN(Id)
FROM
Mytable
GROUP BY
name
)
答案 1 :(得分:2)
这是你要找的吗?
select name from tbl
group by name
having count(*) > 1
答案 2 :(得分:1)
根据我的理解,你的陈述中你不想一次阅读所有记录的意思是你希望查询以块的形式查找重复的名称。
如果我的理解是正确的,那么你可以使用id作为分隔符来批量运行查询。首先运行查询1000条记录,然后运行查询1000到2000之间的记录,然后是2000到3000之间的记录。
但是当你不想一次读取所有记录时会出现一个问题:可能会发生这个名称在你拾取的块中是唯一的,但它仍然可以在整个表中重复,即名称在记录1000和2000之间可以是唯一的,但可以在记录4000和5000之间发生。