1.查詢列的時候,會投影與分組,聚合函數有關的列。
2.where 後面不能加聚合函數,只能是實際存在的列,數據。
3.my sql 執行語句順序
FROM
WHERE
GROUP BY
SELECT
HAVING
ORDER BY
第七章.組合查詢.總結
*使用子查詢
1.嵌套在其他查詢中的查詢,稱爲子查詢。
注意:
num1.子查詢可以有多個,也可在子查詢中繼續使用子查詢;也可在主查詢中使用多個子查詢
num2.在完整的sql結構語句中能嵌套子查詢的位置有:
FROM,WHERE,GROUP BY,SELECT,HAVING,ORDER BY.
num3.自連接需要別名。
自連接即主查詢和子查詢的表是一樣的。
2.子查詢也稱爲內部查詢,而包含子查詢的語句也稱爲外部查詢。
3.所有的子查詢可以被分爲兩個類別:
num1.相關子查詢(執行多次):相關子查詢的執行依賴於外部查詢的數據。外部查詢返回一次,子查詢就執行 一次。
num2.非相關子查詢(只執行一次):非相關子查詢是獨立於外部查詢的子查詢。子查詢總共執行一次,執行完 畢後將值傳遞給外部查詢。
4.舉例:
SELECT columnA,(子查詢) AS columnB FROM 表名;
注意:<>和^=都表示爲!=(不等於)。
5.非相關子查詢比相關子查詢效率更高,但一旦用了子查詢,就會降低整個運行效率。
6.如果子查詢和外部查詢使用的是一個表,而且裏外需要用到同一個屬性時,必須用到列別名。
7.嵌套在SELECT後面的子查詢只能是單行單列。
8.在FROM後面接子查詢必須要寫一個新的列表別名,可以寫多行多列。
9.SELECT columnA FROM tableA WHERE columnB =(子查詢);
注意:不需要在子查詢中的末尾加上分號,因爲它實際上是一個外部查詢語句的一部分。
10.返回多個結果的子查詢 (IN)