數據庫查詢--高級議題

一:取每個分組中的前幾行記錄

假設數據表爲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去第一個第二查詢的差集,即出現在第一個查詢而不出現在第二個查詢中的列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章