使用POW时MySQL命令不同步()

时间:2014-11-02 16:59:28

标签: mysql

我有完整的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

2 个答案:

答案 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)作为结果。 - 奥利琼斯