我有这个查询
UPDATE posts_flags
INNER JOIN
users ON (posts_flags.user_id = users.id )
SET
users.credibility = users.credibility + 100 /* or -100 */
WHERE posts_flags.content_id = ?;
是否可以将新值限制在一个范围内,例如0-1000?
最佳答案
我建议LEAST()
或GREATEST()
。对于+ 100
:
UPDATE posts_flags pf INNER JOIN
users u
ON pf.user_id = u.id
SET u.credibility = LEAST(u.credibility + 100, 1000)
WHERE pf.content_id = ?;
对于
- 100
:UPDATE posts_flags pf INNER JOIN
users u
ON pf.user_id = u.id
SET u.credibility = GREATEST(u.credibility - 100, 0)
WHERE pf.content_id = ?;
如果要在行超出范围的情况下生成错误,则在大多数数据库中,可以使用
check
约束(在MySQL中,您可能需要触发器)。但是,您似乎想施加外部限制,而不是产生错误。