按 str_to_date 排序的 mysql 不起作用

标签 mysql

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

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?我的代码有什么问题? 谢谢

最佳答案

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 
;

关于按 str_to_date 排序的 mysql 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518310/

相关文章:

Mysql多列索引使用错误的索引

mysql - SQL 使用列值作为查询字符串中的关键字

MySQL join 获取用户信息

php - 找不到与列列表匹配的 FULLTEXT 索引(已设置索引)

php - MySQL 不更新两个数据库中的记录

php - 检查数据库中的特定条目

mysql - SQL 返回多个相同的行

mysql - 如何防止表格重复输入?

javascript - 如何在同一个 .js 文件中编写 ajax、php 和 js 代码并从数据库检索数据?

php - 调用非对象的成员函数 bindParam()