如何在SELECT语句mySQL中进行*和计算?

时间:2014-01-09 18:04:11

标签: php mysql sql

我正在尝试执行以下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*

2 个答案:

答案 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