在下面的SQL语句中,结果按顺序返回。如果他们按照升序或降序排列,这将是有道理的,但似乎这里没有秩序。ORDER BY问题没有用子选择正确排序
任何有关为什么ORDER BY函数未按'日期'别名排序的见解将非常感激。
SQL语句:
SELECT id, date, type
FROM (SELECT resume_id AS id, DATE_FORMAT(date_mod, '%M %e, %Y') AS date, 'resume' AS TYPE
FROM resumes
WHERE user_id = '$user_id'
UNION ALL
SELECT profile_id, DATE_FORMAT(date_mod, '%M %e, %Y') AS date, 'profile'
FROM profiles
WHERE user_id = '$user_id'
ORDER BY date DESC LIMIT 5) AS d1
ORDER BY date
结果:
Resume was updated on February 14, 2012
Resume was updated on February 15, 2012
Resume was updated on February 15, 2012
Resume was updated on February 9, 2012
Profile was updated on February 9, 2012
它正确排序,因为内部查询正在返回日期STRING,而不是日期FIELD。 – 2012-02-15 20:58:51
你有看起来像一个小错误,可能无关紧要,但仍值得指出。您在第一个内部查询中选择了“resume_id AS id”,但在第二个查询中仅选择了“profile_id”。这应该是'profile_id AS id'。在你的情况下,你没有使用id,所以它没关系,但如果你最终使用id,可能是一个令人讨厌的bug。在第二个查询中,您也只是选择''profile''而不是''profile'AS type''。 (我在发布的答案中做出了这些修复) – 2012-02-15 21:13:37