常用sql語句及子句(Group By & Having、In&Exists、Order By、Distinct、Limit、Offset)

group by & having
group by:根據字段進行分組,必須配合聚合函數使用。
having:與group by聯合使用,用來過濾group by 返回的結果集,彌補了 where 關鍵字不能與聚合函數聯合使用的不足。

IN & EXISTS
IN:確定給定的值是否與子查詢或列表中的值相匹配。IN在查詢的時候,首先會查詢子查詢的表,然後將內表與外表做一個笛卡爾積,然後按照條件進行篩選。所以相對內表比較小的時候,IN的速度較快。
EXISTS:指定一個子查詢,檢測行的存在。遍歷循環外表,然後看外表中的記錄有沒有和內表的數據一樣的。匹配上就將結果放入結果集中。

IN適用於外表大而內表小的情況;
EXISTS適用於外表小而內表大的情況;

其他子句
在這裏插入圖片描述
LIMIT是MySQL內置函數,其作用是用於限制查詢結果的條數。

1)其語法格式如下:

LIMIT[位置偏移量],行數

其中,中括號裏面的參數是可選參數,位置偏移量是指MySQL查詢分析器要從哪一行開始顯示,索引值從0開始,即第一條記錄位置偏移量是0,第二條記錄的位置偏移量是1,依此類推…,第二個參數爲“行數”即指示返回的記錄條數。

位置偏移量可以理解爲跳過前xx條記錄(元組).

2)基本用法

  1. 當沒有指定位置偏移量時,只取4條時,可以這樣寫
    SELECT * FROM Table LIMIT 4;
  2. 當指定了位置偏移量時,從第3條起取5條時,可以這樣寫
    因爲索引是從0開始計數的,所以第3條對應的索引就是2
    SELECT * FROM Table LIMIT 2,5;

3)應用場合:分頁
// 後臺計算出頁碼、頁數(頁大小)
int curPage = 2;
int pageSize = 10;
int startRow = (curPage - 1) * pageSize;

SELECT * FROM Table LIMIT startRow,pageSize;

limit 3,5 與 limit 5 offset 3

SELECT * FROM Table LIMIT 3,5
等同於:SELECT * FROM Table LIMIT 5 offset 3
等同於:查詢第4行,往後5行數據

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