SQL:過濾和排序查詢結果
即使資料庫中的資料可能是唯一的,任何特定查詢的結果也可能不是——以我們的電影表為例,許多不同的電影可以在同一年上映。在這種情況下,SQL 提供了一種便捷的方法來使用DISTINCT
關鍵字丟棄具有重複列值的行。
SELECT DISTINCT column, another_column, … FROM mytable WHERE condition(s);
由於DISTINCT
關鍵字會盲目刪除重複行,我們將在以後的課程中學習如何使用分組和GROUP BY
子句根據特定列丟棄重複項。
與上幾課中我們整齊排列的表不同,真實資料庫中的大多數資料都沒有特定的列順序新增。因此,隨著表的大小增加到數千甚至數百萬行,可能很難通讀和理解查詢的結果。
為了解決這個問題,SQL 提供了一種使用ORDER BY
子句按給定列按升序或降序對結果進行排序的方法。
SELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC;
當一個ORDER BY
指定的子句,每行是基於指定列的值排序的α-數值。在某些資料庫中,您還可以指定排序規則以更好地對包含國際文字的資料進行排序。
與ORDER BY
子句一起使用的另一個子句是LIMIT
andOFFSET
子句,這是一種有用的優化,可以向資料庫指示您關心的結果子集。
在LIMIT
OFFSET
將指定從哪裡開始從計數的行數。
SELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC LIMIT num_limit OFFSET num_offset;