作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我当前的查询:(它是一个触发器)
UPDATE qanda SET closed = COALESCE(closed, 0) + 1 WHERE id = new.qanda_id
现在我需要让它更高级。目前它总是增加+1
。我想加入 users
表并检查这些:
role_id == 1
,则+ 5
声誉> 5000
,则+ 5
我怎样才能做到这一点?
<小时/>这就是我所做的。我想用 CASE WHEN
来做到这一点(如何?)
BEGIN
SELECT reputation, role_id INTO @reputation , @role_id FROM users WHERE id = new.user_id;
IF (@reputation >= 5000 OR role_id == 1) THEN
UPDATE qanda SET closed = COALESCE(closed, 0) + 5 WHERE id = new.qanda_id;
ELSE
UPDATE qanda SET closed = COALESCE(closed, 0) + 1 WHERE id = new.qanda_id;
END IF
END
最佳答案
update qanda q, users u
set q.closed=COALESCE(q.closed, 0) + if((u.reputation >= 5000 OR u.role_id = 1),5,1)
where q.id = u.qanda_id
关于mysql - 如何为更新创建动态值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50231920/
我是一名优秀的程序员,十分优秀!