一:取每個分組中的前幾行記錄
假設數據表爲stu,字段分別爲id學生號、gno科目號、grade分數
取每個學生成績最好的三科成績,可以先用一個查詢,篩選出每個學生最好的三個成績,然後再查詢整個表從中找出成績在剛纔查詢結果中的記錄。
SQL: select id, gno, grade from stu where grade in(select grade from stu group by id order by grade desc limit 5) group by id;
limit 子句用於規定要返回的記錄的數目。
SELECT
列名稱 FROM
表名稱 LIMIT
開始位置, 行數
注意:開始位置可以省略,默認是0位置。
二、union的用法
union根據我們在select中指定的列,把兩張或更多張表的查詢結果合併至一個表中,可以把union的查詢結果想象成“重疊”了的每個select的查詢結果。
例如:
select title from job_current
union
select title from job_desired
union
select title from job_listings
規則:
1.每個select語句中列的數量必須一致。不可以由第一條語句選取了兩列,由第二條語句選取了一列。
2.每個select語句包含的表達式與統計函數也必須相同。
3.select語句的順序不重要,不會改變結果
4.SQL默認會清楚聯合的結果中的重複值,如果要保留重複值的話,使用union all運算符。
5.列的數據類型必須相同,或者可以互換。
與union相關的兩個運算符intersect和except,兩個運算符的使用方法與union相同,但是intersect返回第一個和第二個查詢的交集,except去第一個第二查詢的差集,即出現在第一個查詢而不出現在第二個查詢中的列。