一尘不染

删除所有值比第二高的值低5倍的记录

sql

我有一个包含两个字段的表(价格),代码(字符)和价格(十进制)。我需要找到具有相同代码的所有记录,价格要低5倍或少于两个最高价。

EG在这种情况下,我希望删除id = 1:

id   code   price
1    1001   10
2    1001   101
3    1001   40
4    1001   201
5    1002   122
6    1002   50

阅读 168

收藏
2021-03-08

共1个答案

一尘不染

DELETE
FROM myTable
WHERE ID IN (
    SELECT *
    FROM (
        SELECT t2.id
        FROM myTable t2
        WHERE EXISTS (
            SELECT 1
            FROM myTable t3
            WHERE t3.code = t2.code
            AND t3.price > t2.price * 5
            HAVING COUNT(*) > 1
            )
    ) t
)
;
2021-03-08