MySQL if语句

时间:2011-09-01 09:51:59

标签: mysql

我想在invoiceIDNULL时更新所有行,否则只更新所有invoiceID相同的行。

我当前的SQL语句如下:

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

因此,当Table.invoiceIDNULL时,它应该更新所有行,否则只更新invoiceID相同的行。

2 个答案:

答案 0 :(得分:1)

假设invoiceID是输入参数,您可以这样做:

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

在这种情况下,如果@InvoiceID参数不为null,则必须满足第一个条件,因为第二个条件永远不会满足,但如果它为null,则表的每一行将与第二个部分匹配。条件,因此第一个不再相关

答案 1 :(得分: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);