请教一个 Mysql 条件更新语句,一句完成

2021-04-18 22:43:59 +08:00
 uti6770werty

在同一个表中,对值的进行判断,根据判断结果[是否]再进行更新

1 、有一个名叫mtt的表
2 、mtt 表内有三个涉事字段,AID,mttID,UpdateTime
3 、mttID='3A2NN179'的条目,如果AID不等于'2719',把这些条目的AID更新为'2719',同时更新 UpdateTime 时间为 now(),
4 、如果AID已经是 2719,则不用理会,也不用更新 UpdateTime

SELECT * FROM mtt WHERE mttID='3A2NN179';

程序上来说,
用 SELECT 到内容,程序本地判断,再去做两次 UPDATE,两三个交互的是能做到,握手延时等,费效比不好,看看有无一句完成的可能?

1866 次点击
所在节点    MySQL
4 条回复
CEBBCAT
2021-04-18 22:53:27 +08:00
UPDATE mtt SET AID='2719',UpdateTime=UNIX_TIMESTAMP() WHERE mttID='3A2NN179' AND AID!='2719'


这样?
uti6770werty
2021-04-18 23:01:44 +08:00
@CEBBCAT 赞一个,思路拐了一个弯就没想到,感谢!
jorneyr
2021-04-19 09:45:51 +08:00
UPDATE question_knowledge_point qkp
JOIN (SELECT knowledge_point_id AS id, COUNT(id) AS count FROM question GROUP BY knowledge_point_id) AS t ON qkp.id=t.id
SET qkp.count=t.count
devswork
2021-04-19 14:26:49 +08:00
update xxx where mttID='3A2NN179' and AID != '2719'
不就可以啦?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX