Mysql 如果列的group by count大于1,如何删除特定列中具有最小值的行
我有一张如下所示的表格,名称为Recondation 我想删除Mysql 如果列的group by count大于1,如何删除特定列中具有最小值的行,mysql,sql,duplicates,sql-delete,Mysql,Sql,Duplicates,Sql Delete,我有一张如下所示的表格,名称为Recondation 我想删除cnt具有最小值且存在多条ID\u recipient记录的所有行 如果有一条ID\u接收者的记录,则无论cnt值是什么,都不应删除该记录 蓝色突出显示的是必须保留的记录 我试过: DELETE from table where( SELECT DISTINCT(A.ID_recipient), DISTINCT(A.cnt) FROM ( SELECT MIN(cnt) as cnt FROM re
cnt
具有最小值且存在多条ID\u recipient
记录的所有行
如果有一条ID\u接收者的记录
,则无论cnt
值是什么,都不应删除该记录
蓝色突出显示的是必须保留的记录
我试过:
DELETE from table where(
SELECT DISTINCT(A.ID_recipient), DISTINCT(A.cnt) FROM (
SELECT MIN(cnt) as cnt FROM recomendation_table_ID_recipient GROUP BY ID_recipient HAVING COUNT(*) > 1 ) as A);
不起作用。如果要使用2个维度,则必须在子句中使用 您的子查询没有多大意义,所以您应该首先测试它,或者使用想要的示例发布数据
DELETE from recomendation_table_ID_recipient where (ID_recipient,cnt) IN (
SELECT DISTINCT A.ID_recipient, A.cnt FROM (
SELECT ID_recipient, MIN(cnt) as cnt FROM recomendation_table_ID_recipient GROUP BY ID_recipient HAVING COUNT(*) > 1 ) as A);
如果要使用2个维度,则必须使用IN子句 您的子查询没有多大意义,所以您应该首先测试它,或者使用想要的示例发布数据
DELETE from recomendation_table_ID_recipient where (ID_recipient,cnt) IN (
SELECT DISTINCT A.ID_recipient, A.cnt FROM (
SELECT ID_recipient, MIN(cnt) as cnt FROM recomendation_table_ID_recipient GROUP BY ID_recipient HAVING COUNT(*) > 1 ) as A);
请看,并注意DISTINCT不是一个函数。我创建了一个带有一些测试数据的db FIDLE,但正如@草莓所指出的,如果您希望将来获得帮助,您应该这样做。我相信您下次也可以为OP做这一切。请看,并注意DISTINCT不是一个函数。我创建了一个带有一些测试数据的db FIDLE,但是正如@草莓所指出的,如果你想在将来得到帮助,你应该这样做。我相信你也可以在下次的行动中做到这一切。