我遇到了一个问题,到目前为止我找不到答案。
我有一张这样的桌子:
column1 | column2 | column3
---------------------------
name1 | 3 | 12
name1 | 3 | 10
name1 | 2 | 17
name2 | 3 | 15
name2 | 3 | 15
name2 | 2 | 11
如何删除在
column2
和column3中没有最高值的行(Column2
具有优先级)?结果应如下所示:
column1 | column2 | column3
---------------------------
name1 | 3 | 12
name2 | 3 | 15
name2 | 3 | 15
最佳答案
您可以使用如下查询:
DELETE FROM yourtable
WHERE
(column1, column2, column3) NOT IN (
SELECT * FROM (
SELECT yourtable.column1, yourtable.column2, max(column3) max_column3
FROM
yourtable INNER JOIN (
SELECT column1, max(column2) max_column2
FROM yourtable
GROUP BY column1) mx
ON yourtable.column1=mx.column1
AND yourtable.column2=mx.max_column2
GROUP BY
yourtable.column1) s
)
请参阅小提琴here。
关于mysql - 如何从不符合某些条件的表中删除行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15009240/