在下面的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