如果可能,我希望通过组合这两个查询来优化数据库访问。
如何将这两个陈述合并为一个?
update tbl_priority SET a=1 where j='j1' and priority='1';
update tbl_priority SET g=1 where j='j1';
任何帮助,建议都非常感谢。
答案 0 :(得分:3)
我没有看到很好的结合这两个更新语句的方法,因为WHERE
子句中的逻辑不一致。但是,我们可以在j = 'j1'
子句中保留常见条件WHERE
,然后使用CASE
表达式来处理a
分配:
UPDATE tbl_priority
SET a = CASE WHEN priority = '1' THEN 1 ELSE a END,
g = 1
WHERE j = 'j1'
请注意,这并不理想,因为我们有一个CASE
表达式的分支,它将a
赋予自身。这本身不应该导致特定记录显示为已被修改过。
答案 1 :(得分:1)
尝试
update tbl_priority SET g=1, a = CASE WHEN priority='1' THEN 1 ELSE a END
where j='j1' ;