我正在使用MYSQL查詢,它使用公式來確定行的相似性,然後根據它們的差異對它們進行排序。查詢工作完美,但現在我正在嘗試引入LIMIT,我遇到了麻煩。我的原始查詢如下。MYSQL - 如何使用ORDER BY和LIMIT對列進行排序,然後按另一列對這些結果進行排序
SELECT t2.*, ABS(t1.v1-t2.v1)+ABS(t1.v2-t2.v2)+ABS(t1.v3-t2.v3) AS diff
FROM (SELECT * FROM tbl WHERE id=1) AS t1
JOIN tbl AS t2 ON t1.id <> t2.id
ORDER BY diff;
現在我介紹了一個LIMIT表達式和兩個ORDER BY語句,它不能正常工作。我的最終目標是加入如上所述的表格,然後按id行對錶格進行排序,將結果限制爲10,然後通過diff ASC對錶格進行排序。一切工作正常,直到差異的最後ORDER BY,它正在排序ID列,然後顯示前10個結果,但不是通過差異重新排序結果。我一直在努力:
SELECT t2.*, ABS(t1.v1-t2.v1)+ABS(t1.v2-t2.v2)+ABS(t1.v3-t2.v3) AS diff
FROM (SELECT * FROM tbl WHERE id=1) AS t1
JOIN tbl AS t2 ON t1.id <> t2.id
ORDER BY id, diff LIMIT 10;
就像我以前說過,上面只是查詢以保持健康的ID進行排序行和結果限制爲10,但不執行最後的ORDER BY DIFF。
在此先感謝您的幫助!
只需在另一個select語句中包裝整個select:'select * from <當前select語句> by diff'。 – Andrew 2014-10-30 21:10:36
@Andrew,請將其作爲回答發佈。 – Rahul 2014-10-30 21:29:12