2011-09-01 139 views
-1

我想要更新所有行,當invoiceIDNULL else只更新所有invoiceID都是相同的行。MySQL if語句

我當前的SQL語句如下:

UPDATE Table SET strPOnummer = '123' 
WHERE strPOnummer = '456' AND strPOnummer != '' AND strPOnummer IS NOT NULL 

所以,當Table.invoiceIDNULL,應該更新所有行,否則更新僅在invoiceID是相同的行。

+1

strPOnummer vs invoiceID是什麼?是一樣的嗎? – ajreal

+0

@ajreal不,這是不一樣的。它應該在每一行更新'strPOnummer',除非'invoiceID'不爲null(但是在'invoiceID'是相同的地方)。 – Devator

+2

赦免我的無知,我只是不明白你的意思是由invoiceID是一樣的(用什麼?) – ajreal

回答

1

假設invoiceID是輸入參數,你可以這樣做:

UPDATE Table 
SET strPOnummer = '123' 
WHERE --your non-invoiceID filtering conditions go here 
    AND (Table.invoiceID = @InvoiceID OR @InvoiceID IS NULL) 

在這種情況下,如果@InvoiceID參數不爲空,那麼必須滿足第一個條件,因爲第二個條件永遠不會被滿足,但是如果它是空的,那麼表中的每一行都將與條件的第二部分匹配,因此第一個條件一個不再相關

0

我會寫只是例子並不碼使用,請自行根據需要進行修改

SELECT IF(invoiceID=1, 
    (UPDATE table as tmp SET... WHERE tmp.id=table.id), 
    (UPDATE table as tmp SET... WHERE tmp.id=table.id) 
) FROM table);