1

我有一个带有日期的表(实际上它们是这种格式的字符串时间:2004-Mar)。我想根据这个日期对记录进行排名,所以我有以下查询:

SELECT *,STR_TO_DATE(detail,'%Y-%b') 
FROM table2 JOIN user_table 
ON table2.user_id = user_table.id 
ORDER BY STR_TO_DATE(detail,'%Y-%b') DESC 
WHERE table2_col = 11;

但是这个查询不起作用,它要求我在第 5 行检查 'WHERE table2_col = 11' 附近的语法错误

如果我删除 ORDER BY STR_TO_DATE(detail,'%Y-%b') DESC ,那么一切正常。所以我认为错误来自str_to_date?我的代码有什么问题?谢谢

4

1 回答 1

2

order by 应该在 where 子句之后

试试这个::

SELECT *,STR_TO_DATE(detail,'%Y-%b') 
FROM table2 JOIN user_table 
ON table2.user_id = user_table.id 

WHERE table2_col = 11
ORDER BY STR_TO_DATE(detail,'%Y-%b') DESC 
;
于 2012-11-22T18:28:50.087 回答