1. 程式人生 > >MySQL學習(四)查詢

MySQL學習(四)查詢

一、group_concat()函式。把groupby的分組中欄位資料組合顯示出來

  select s_id , GROUP_CONCAT(要顯示的欄位名)  from table group by 分組欄位

二、group_by 與 Having 結合 :根據條件篩選分組條件

  select s_id ,group_concat(f_name) as names from fruits group by a_id having count(f_name) > 1

  Having  與 where 區別:

  1. 關鍵字用來在資料分組之後進行分組篩選。
  2. where在分組之前篩選記錄,且where排除掉的資料不會出現在分組的結果中

三、多欄位分組

  使用group by進行分組,指定多個欄位,可以按照層次分組,先根據第一個欄位進行分組,然後在對分組根據第二根第二個欄位進行分組。

四、使用LImit限制查詢結果的數量

  Limit [位置偏移量],行數

  偏移量可以不指定,行數指返回的資料的條數

  select * from frults limit 4:返回查詢結果的前4條資料

  select * from frults limit 5,3 :返回查詢結果偏移量為5(從第六條資料開始)後的三條資料

五、內連線查詢

  select * from frults ,suppliers where frults.s_id = suppliers.s_id

  select * from frults inner join suppliers on frults.s_id = suppliers.s_id

  兩種方式一樣的

六、自連線查詢

  查詢中設計的表示在物理上同一張表,邏輯上是兩張表。自連線是一種特殊的內連線

  select  f1.s_id , f2.s_id from frults as f1 ,frults as f2 where f1.s_id = f2.s_id and f1.s_id = "a1"

七、左外連線查詢

  包括左表的所有行,如果右表沒有匹配行就會為NUL

  select * from frults left outer join suppliers on frults.s_id = suppliers.s_id

八、右外連線查詢

  包括右表的所有行,如果左表沒有匹配行就會為NUL

  select * from frults right outer join suppliers on frults.s_id = suppliers.s_id

九、ANY,SOME只要滿足其中一個就返回true

十、ALL 所有條件都滿足才返回True

十一、exists關鍵字:如果子查詢返回結果不為空,則會進行主查詢,否則不會進行主查詢,可以在where中使用