我想在更新中添加条件我真的不知道该怎么做。 我想做以下事情:
UPDATE
xyz_table
SET
cap = some_text, IF (some_text IS NULL) THEN some_text = alternate_text ENDIF
WHERE
alternate_text <> '' AND
cap IS NULL AND
some_relation_id IN ( 50, 51, 52 );
如果有任何方法可以做到这一点,请建议其他我认为我需要执行两次相同的查询才能实现此目的。 在此先感谢:)
答案 0 :(得分:2)
您可以使用case
或coalesce()
。这是set
声明:
SET cap = some_text,
some_text = COALESCE(some_text, alternate_text)
答案 1 :(得分:0)
应该这样做:
UPDATE
xyz_table
SET
cap = some_text, some_text = (case when some_text IS NULL THEN alternate_text else some_text end)
WHERE
alternate_text <> '' AND
cap IS NULL AND
some_relation_id IN ( 50, 51, 52 );
在运行
之前不要忘记BEGIN
交易
答案 2 :(得分:0)
在您的特定示例中,最简单的方法是使用IsNull()。
UPDATE
xyz_table
SET cap = ISNULL(some_text, alternate_text)
WHERE alternate_text <> '' AND
cap IS NULL AND
some_relation_id IN ( 50, 51, 52 );
对于其他条件,我倾向于使用案例陈述。
UPDATE
xyz_table
SET cap = CASE WHEN some_text = '' THEN alternate_text ELSE some_text END
WHERE alternate_text <> '' AND
cap IS NULL AND
some_relation_id IN ( 50, 51, 52 );