我有完整的MySQL查询运行,直到我添加POW函数。我不明白为什么我会收到这个错误。我试图谷歌它,但空洞的解决方案。
原始查询:
SELECT 86400 /
(NOW() - `created_at`) *
(
(
SELECT COUNT(`Votes`.`voteID`)
FROM `Votes`
WHERE `postID` = `Posts`.`postID`
LIMIT 1
)
+ 0
* 5
) AS `rank`
FROM `Posts`
使用POW()查询:
SELECT POW(
86400
/ (NOW() - `created_at`)
*
(
(
SELECT COUNT(`Votes`.`voteID`)
FROM `Votes`
WHERE `postID` = `Posts`.`postID`
LIMIT 1
)
+ 0
* 5
),
1.8
) AS `rank`
FROM `Posts`
我得到的错误是#2014 - Commands out of sync; you can't run this command now
答案 0 :(得分:0)
虽然这似乎是POW()函数中的有趣错误,但您可以通过封装到另一个子查询中来解决:
SELECT POW(rank,1.8)
FROM
(
SELECT (
86400
/ (NOW() - `created_at`)
*
(
(
SELECT COUNT(`Votes`.`voteID`)
FROM `Votes`
WHERE `postID` = `Posts`.`postID`
LIMIT 1
)
+ 0
* 5
)
) AS `rank`
FROM Posts
) tabX
答案 1 :(得分:0)
我试过奥利琼斯'建议,对我来说很有效!
您可能会通过传递一个荒谬的大型或非数字的第一个参数来揭露
POW()
中的错误。(NOW() - created_at)
可能不会做你认为它做的事情。如果您希望进行时间差计算,则可能需要UNIX_TIMESTAMP() - UNIX_TIMESTAMP(created_at)
作为结果。 - 奥利琼斯