2

不确定以下查询的错误是什么?

select  r.request_id, rr.request_result_id,r.date_submitted
from request_results rr 
  inner join requests r on rr.request_id = r.request_id 
  where ((rr.file_size IS NULL) or length(rr.results) = 0) 
     and r.date_submitted >= CURDATE() 
order by r.request_id, rr.request_result_id request_results;

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“request_results”附近使用正确的语法

4

6 回答 6

2

代替

按 r.request_id、rr.request_result_id、X.request_results 排序

最终通过

ORDER BY r.request_id, rr.request_result_id, r.date_submitted ;

因为 ORDER BY 子句中指定的列应该是 SELECT 列列表中选择的列之一。

于 2013-10-07T13:01:25.063 回答
0

您在查询末尾无缘无故地添加了表名

    SELECT r.request_id,
       rr.request_result_id,
       r.date_submitted
FROM   request_results rr
       INNER JOIN requests r
               ON rr.request_id = r.request_id
WHERE  ( ( rr.file_size IS NULL )
          OR Length(rr.results) = 0 )
       AND r.date_submitted >= Curdate()
ORDER  BY r.request_id,
          rr.request_result_id

对于这样的查询,如果您不想弄乱自己,请使用 SQL 格式化程序。我使用的是 http://www.dpriver.com/pp/sqlformat.htm

于 2013-10-07T12:53:32.893 回答
0

In order by you missing a comma Try this code

select  r.request_id, rr.request_result_id,r.date_submitted
from request_results rr 
  inner join requests r on rr.request_id = r.request_id 
  where ((rr.file_size IS NULL) or length(rr.results) = 0) 
     and r.date_submitted >= CURDATE() 
order by r.request_id, rr.request_result_id, r.date_submitted;
于 2013-10-07T13:21:19.360 回答
0

从最后删除request_results,它是一个表的名称。

select 
    r.request_id, rr.request_result_id, r.date_submitted
from
    request_results rr
        inner join
    requests r ON rr.request_id = r.request_id
where
    ((rr.file_size IS NULL)
        or length(rr.results) = 0)
        and r.date_submitted >= CURDATE()
order by r.request_id , rr.request_result_id;

并尝试编写更清晰、格式良好的代码(或使用像MySQL 工作台中的自动格式化选项)

于 2013-10-07T12:49:31.550 回答
0

我认为问题就在这里

order by r.request_id, rr.request_result_id request_results

'request_results' 在这里指的是什么?

将其更改为

order by r.request_id, rr.request_result_id, r.request_results
于 2013-10-07T12:48:17.847 回答
0

你在最后漏掉了一个逗号。试试这个,但用正确的表别名替换 X

SELECT r.request_id, rr.request_result_id, r.date_submitted
    FROM request_results rr INNER JOIN requests r ON rr.request_id = r.request_id
    WHERE ((rr.file_size IS NULL) or length(rr.results) = 0) and r.date_submitted >= CURDATE()
    ORDER BY r.request_id, rr.request_result_id, X.request_results;
于 2013-10-07T12:48:41.620 回答