我正在尝试执行以下mySQL查询:
SELECT
SQL_CALC_FOUND_ROWS,
TIMESTAMPDIFF(DAY, date_identified,
IFNULL(date_closed,
CURDATE())) as days_open,
*
FROM (`risks`)
ORDER BY `WBS` ASC LIMIT 10
但我一直收到错误。但是,如果我删除了SQL_CALC_FOUND_ROWS
和*
,而是执行:
SELECT
id, TIMESTAMPDIFF(DAY, date_identified,
IFNULL(date_closed,
CURDATE())) as days_open
FROM (`risks`)
ORDER BY `WBS` ASC LIMIT 10
然后查询成功执行。我有什么方法可以更改此查询以包含SQL_CALC_FOUND_ROWS
和*
?
答案 0 :(得分:3)
sql_calc_found_rows
是一个指令,而不是一个字段,你不要在它后面加一个逗号:
SELECT SQL_CALC_FOUND ROWS field1, field2, calc1, calc2, etc...
^--- no comma
类似INSERT IGNORE
- ignore是指令,而不是字段。
答案 1 :(得分:1)
我能想到的最简单的方法是在*
之前包含行源名称(或别名):
SELECT SQL_CALC_FOUND_ROWS
TIMESTAMPDIFF(DAY, date_identified, IFNULL(date_closed, CURDATE())) as days_open,
`risks`.*
FROM
(`risks`)
ORDER BY
`WBS` ASC
LIMIT 10