我需要在几个条件满足时更新几列。我应该在这里使用哪一个? CASE
或IF-ELSE
?
需要做这样的事情,不确定使用哪一个。 但在这两种情况下,我都会看到错误"无法返回多列":
IF colZ not like "%abc%" from table1
THEN
Update table2 set colA = "A" and colB = "B"
ELSE
DONT DO ANYTHING(but should tel didnt do anything)
END
IF colZ not like "%abc%" from table1
THEN
get t2.col1,t2.col2,t2.col3,t3.col1,t3.col2 from table2 t2, table3 t3
END
答案 0 :(得分:0)
我认为正确的方法是使用IF
语句:
IF (SELECT COUNT(*) FROM Table1 WHERE ColZ NOT LIKE '%abc%') > 0 THEN
UPDATE Table2 SET ColA = 'A' AND ColB = 'B';
END IF;
这样,如果Table1中的至少一行满足NOT LIKE
条件,则将执行UPDATE
语句。但请注意,如果您使用UPDATE SET
而不使用WHERE
,则表2中的所有行都会受到影响。
请注意,IF
语句只能在存储的程序中使用,请参阅https://dev.mysql.com/doc/refman/5.7/en/if.html