1.查找重復的行
SELECT
*
FROM
blog_user_relation a
WHERE
(a.account_instance_id,a.follow_account_instance_id)
IN
(
SELECT
account_instance_id,follow_account_instance_id
FROM
blog_user_relation
GROUP
BY
account_instance_id, follow_account_instance_id
HAVING
COUNT
(
*
)
>
1
)
2.刪除重復的行(保留一條)
PS:因為mysql的delete,如果被刪的表的where條件里有in,且in里面也有此表,那就刪除不了。
/*
創建個臨時表
*/
CREATE
TABLE
blog_user_relation_temp
AS
(
SELECT
*
FROM
blog_user_relation a
WHERE
(a.account_instance_id,a.follow_account_instance_id)
IN
(
SELECT
account_instance_id,follow_account_instance_id
FROM
blog_user_relation
GROUP
BY
account_instance_id, follow_account_instance_id
HAVING
COUNT
(
*
)
>
1
)
AND
relation_id
NOT
IN
(
SELECT
MIN
(relation_id)
FROM
blog_user_relation
GROUP
BY
account_instance_id, follow_account_instance_id
HAVING
COUNT
(
*
)
>
1
));
/*
刪除數據
*/
DELETE
FROM
`blog_user_relation`
WHERE
relation_id
IN
(
SELECT
relation_id
FROM
blog_user_relation_temp);
/*
刪除臨時表
*/
DROP
TABLE
blog_user_relation_temp;
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

