删除所有字段,其值比顶部字段低5倍

时间:2017-11-03 19:52:56

标签: mysql sql

我有一个表(prices),其中包含两个字段code(字符)和价格(十进制)。 我需要找到所有相同代码的字段,价格比最高价格低5倍。例如,在这种情况下:

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

我需要删除id为1和4的字段。我正在尝试smth。像这样:

DELETE FROM `prices` WHERE `code` IN (SELECT `code` FROM `prices` sa WHERE `code` IN (SELECT `code` FROM `prices` WHERE `price`>sa.`price`*5) and sa.code=prices.code);  

但我不确定这是正确的方法。 下一个任务是删除所有字段,低于两个顶部字段3x。因此,如果我们有至少两个高于100的字段,我们需要删除低于25的所有字段。

1 个答案:

答案 0 :(得分:4)

您将使用join和聚合:

delete p
    from prices p join
         (select p.code, max(price) as max_price
          from prices p
          group by p.code
         ) pp
         on pp.code = p.code and pp.price < p.price * 0.2;