在我的表,我有以下欄目:我可以提取在sql中重複的提取記錄嗎?
id|name|gender
我想提取所有被複制的名字,但我不想掃描所有的數據庫進行逐一統計每個記錄.. 。我只是想知道誰具有相同的名稱... 例如:
0|mary|F
1|tom|M
2|peter|M
3|mary|F
4|chris|M
5|chris|F
6|alex|M
我只是想:瑪麗和克里斯... 但我不想一次閱讀完所有記錄... 有任何想法嗎?謝謝。
在我的表,我有以下欄目:我可以提取在sql中重複的提取記錄嗎?
id|name|gender
我想提取所有被複制的名字,但我不想掃描所有的數據庫進行逐一統計每個記錄.. 。我只是想知道誰具有相同的名稱... 例如:
0|mary|F
1|tom|M
2|peter|M
3|mary|F
4|chris|M
5|chris|F
6|alex|M
我只是想:瑪麗和克里斯... 但我不想一次閱讀完所有記錄... 有任何想法嗎?謝謝。
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
)
這是你在找什麼?
select name from tbl
group by name
having count(*) > 1
按我的理解,你從你的陳述意味着你做什麼希望一次讀取所有記錄的方式是希望查詢以塊的形式查找重複的名稱。
如果我的理解是正確的,那麼你可以批量運行查詢使用id作爲分隔符即ie。首先運行1000條記錄的查詢,然後運行1000到2000之間的記錄查詢,然後運行2000到3000條之間的記錄。
但是有一個問題,當你不想一次讀取所有記錄時:可能發生該名稱在您已拾取的塊中是唯一的,但仍可以是整個表中的副本,即名稱在記錄1000和2000之間可以是唯一的,但可以在記錄4000和5000之間發生。
+1。回答並提供了還原劑數據的解決方案 – niktrs