2011-09-01 148 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);