2012-11-22 79 views
0

我有這個表:MySQL查詢與對重複密鑰更新,刪除項目不值查詢

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與天(唯一的)組合。

如果item1或item2發生更改,我會進行ON DUPLICATE KEY更新,但如果在第4天取消時如何處理?我想刪除該行或將其設置爲NULL。 有沒有在查詢中刪除(或更新爲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); 

如何刪除(或更新到NULL)行與ID 4?

回答

0

爲什麼你想要在一個語句中抽筋一切。只需delete * from yourTable where adv_nr = 2; insert into ...

首先,我不認爲這是可能的,你要求。其次,當你不一步就做到這一點時,它不太容易出錯。更容易維護,等等...

只是不要讓它比它需要更復雜。

0

你的例子似乎不符合你的要求。我想你是問,「如果日期= 4的值沒有提交,則清空項目值。」您的示例查詢包含第4天的值。

因此,假設您要求將任何沒有VALUES條目的行都設爲空值,否則在單個查詢中沒有辦法做到這一點。您可以使用TRIGGER在插入後執行某些邏輯。