我有一个表(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的所有字段。
答案 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;