一個問題:
執行標準 SQL 查詢時,這兩者之間有什么區別?因為我得到了不同的排序:
SELECT col1, col2, col3 FROM database.table order by col2SELECT col1, col2, col3 FROM database.table L order by col2(命名為L)
謝謝
uj5u.com熱心網友回復:
執行標準 SQL 查詢時,這兩者之間有什么區別?因為我得到了不同的排序:
它們是不同的查詢,因此與您兩次運行相同的查詢相比,它們更有可能獲得不同的查詢計劃,盡管這也可能發生。
如果col2不是唯一的,按它排序不會強制對行進行完整排序,并且不同的查詢計劃可以產生不同的排序。
如果您需要穩定的排序,例如分頁實作,請確保 ORDER BY 是唯一的。通常,您只需將 PK 列添加到 ORDER BY 的末尾。
uj5u.com熱心網友回復:
L 只是表的別名。在那個查詢中它沒有任何目的。
別名不會對 ORDER BY 子句定義的順序產生影響。
至多,col2 不是唯一的,并且在不同時間運行任一查詢可能會更改 col1、col3 的順序。
在連接具有某些列名的多個表時,它更有用。
例如。
SELECT
long_winded_table_name_full_of_stuff.id,
long_winded_table_name_full_of_stuff.name as name1,
other_table_not_named_by_a_golfcoder.name as name2
FROM long_winded_table_name_full_of_stuff
LEFT JOIN other_table_not_named_by_a_golfcoder
ON other_table_not_named_by_a_golfcoder.fk_id = long_winded_table_name_full_of_stuff.id
通過使用別名,您可以縮短它。
SELECT
s.id,
s.name as name1,
other.name as name2
FROM long_winded_table_name_full_of_stuff AS s
LEFT JOIN other_table_not_named_by_a_golfcoder AS other
ON other.fk_id = s.id
它有助于提高可讀性。
所以人們在他們的查詢中使用別名,即使表沒有共同的列名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/389899.html
標籤:sql
下一篇:帶有鑒別器的整數標識列
