作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在代码中的 select if
中有以下查询,但我不记得包含 @lastComment := time
的行实际上做了什么?
SELECT
IF(
(SELECT @lastComment := `time`
FROM usermessages
WHERE userId = $userId
ORDER BY id DESC
LIMIT 1)
IS NOT NULL,
DATE_SUB(NOW(), INTERVAL 30 SECOND) >= @lastComment, 1
)
看起来@lastComment只是一个临时变量保持时间,但我不明白为什么需要它,是否只是为了将它传递给其他查询?
最佳答案
显然您不想执行查询两次,这是正确的,但您可以轻松省略用户定义的变量,从而使其更清晰:
SELECT
IFNULL(
(
SELECT DATE_SUB(NOW(), INTERVAL 30 SECOND) >= `time`
FROM usermessages
WHERE userId = $userId
ORDER BY id DESC
LIMIT 1
)
, 1
)
转换为:检查给定表达式是否为 NULL,如果是则返回 1,否则返回表达式值。
关于mysql - @variable := variable2 mean in a MySQL query? 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554595/
我是一名优秀的程序员,十分优秀!