我有这张桌子:
ID adv_nr day item1 item2 item3
1 2 2 10 23 34
2 2 3 11 23 34
3 2 4 10 24 34
4 2 5 10 35 34
5 3 10 56 34 12
密钥设置在ID(Primairy)和adv_nr与day(UNIQUE)的组合。
如果item1或item2发生了变化,我会进行ON DUPLICATE KEY更新,但如果在第4天删除的情况下如何处理?我想删除该行或将其设置为NULL。 在查询中是否有一种方法可以删除(或UPDATE为NULL)具有adv_nr = 2但在查询值中不存在的值? 所以查询将如下所示:
INSERT INTO table (`adv_nr`,`day`,`item1`,`item2`,`item3`)
VALUES (2,2,10,24,34), (2,3,11,28,34), (2,4,10,35,34) ON DUPLICATE KEY UPDATE
Item1 = VALUES(item1),
Item2 = VALUES(item2),
Item3 = VALUES(item3);
如何删除(或UPDATE为NULL)ID为4的行?
答案 0 :(得分:0)
为什么你想在一个陈述中扼杀一切。只需delete * from yourTable where adv_nr = 2; insert into ...
。
首先,我不认为你可能要求的是什么。其次,当你不是一步到位时,它就不容易出错。更容易维护等等......
不要让它变得比它需要的更复杂。
答案 1 :(得分:0)
您的示例似乎与您要求的不符。我想你是在问,“如果没有提交day = 4的值,那么就会忽略项目值。”您的示例查询包含第4天的值。
因此,假设您要求将任何没有VALUES条目的行置空,那么在单个查询中没有好办法。您可以使用TRIGGER在INSERT后执行某些逻辑。