【问题标题】:What's wrong with this SQL statement - Syntax Error #1064?此 SQL 语句有什么问题 - 语法错误 #1064?
【发布时间】:2012-05-11 18:20:34
【问题描述】:
SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
FROM data
ORDER BY id ASC 
WHERE unixtime <= CURDATE() LIMIT 10;

SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
FROM data
ORDER BY id ASC 
WHERE unixtime < CURDATE() LIMIT 10;

所有 phpAdmin 告诉我的是:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 在第 1 行的 'WHERE unixtime

【问题讨论】:

    标签: mysql sql syntax syntax-error


    【解决方案1】:

    ORDER BYWHERE 子句颠倒了。

    SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
    FROM data
    WHERE unixtime < CURDATE()
    ORDER BY id ASC LIMIT 10;
    

    SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
    FROM data
    WHERE unixtime <= CURDATE() 
    ORDER BY id ASC LIMIT 10;
    

    我刚刚意识到您的问题的一部分,因为您在 WHERE 子句中引用了别名。:

    WHERE UNIX_TIMESTAMP(timestamp) <= CURDATE() 
    

    WHERE UNIX_TIMESTAMP(timestamp) < CURDATE() 
    

    【讨论】:

      【解决方案2】:

      试试这个

      SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
      FROM data
      WHERE (UNIX_TIMESTAMP(timestamp)) < CURDATE() ORDER BY id ASC  LIMIT 10;
      

      【讨论】:

        【解决方案3】:

        尝试以下方法:

        SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime 
        FROM data 
        WHERE UNIX_TIMESTAMP(timestamp) <= CURDATE() 
        ORDER BY id ASC LIMIT 10;
        

        【讨论】:

          【解决方案4】:

          order by 语句之前需要 where 语句。

          【讨论】:

            猜你喜欢
            • 2014-12-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-30
            • 2015-05-31
            • 1970-01-01
            • 2020-09-16
            • 2020-06-27
            相关资源
            最近更新 更多