mysql - 簡單查詢
阿新 • • 發佈:2020-09-14
-- distinct select distinct user_email from `user`; -- order by 欄位1 desc/asc[, 欄位2 desc/asc] -- 預設是asc select * from `user` order by user_gender desc, user_id asc limit 10; -- limit N:返回N條記錄 select * from `user` limit 10; -- offset M:跳過 M 條記錄, 預設 M=0, 單獨使用不起作用 select * from `user` order by user_id asc limit 10 offset 10; -- limit M, N:跳過M條記錄,返回N條記錄,相當於limit N offset M; select * from `user` order by user_id asc limit 10, 20; -- 簡單分頁 #當前第幾頁 set @page_number = 2; #每頁條數 set @page_size = 10; set @offset1 = (@page_number-1)*@page_size; -- select * from `user` order by user_id asc limit @page_size offset @offset1; -- select * from `user` order by user_id asc limit @offset1, @page_size; -- 分頁效能優化 ? -- between and select * from `user` where user_gender between 0 and 1 limit 10; -- where -- and/or -- = 、 <>/!=、 >、 <、 >=、 <= -- binary 關鍵字來設定 WHERE 子句的字串比較是區分大小寫的。 select * from `user` where binary user_email = '[email protected]'; -- where like 匹配/模糊匹配,會與 % 和 _ 結合使用。 -- %:表示任意 0 個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。 -- _:表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度語句。 -- '%a' //以a結尾的資料 -- 'a%' //以a開頭的資料 -- '%a%' //含有a的資料 -- '_a_' //三位且中間字母是a的 -- '_a' //兩位且結尾字母是a的 -- 'a_' //兩位且開頭字母是a的 -- MySQL union 操作符 -- MySQL union 操作符用於連線兩個以上的 SELECT 語句的結果組合到一個結果集合中。多個 SELECT 語句會刪除重複的資料。 select * from `user` where user_id between 10 and 30 union #union all / union 包含重複/刪除重複 select * from `user` where user_id between 20 and 40; -- group by 和 聚合函式 -- group by X, Y -- 聚合函式 -- max() -- min() -- sum() -- count() -- avg() select user_idcard, user_gender from `user` group by user_idcard, user_gender; #計算總數 select user_idcard, count(user_idcard) as 'count' from `user` group by user_idcard; #求和 select user_gender, sum(user_gender) as 'sum' from `user` group by user_gender; #計算平局值 select user_gender, avg(user_gender) as avg from `user` group by user_gender; -- with rollup 可以實現在分組統計資料基礎上再進行相同的統計(SUM,AVG,COUNT…)。 -- 其中記錄 NULL 表示所有的次數。 select coalesce(user_idcard, '總數'), count(user_gender) as 'count' from `user` group by user_idcard with rollup; -- having select user_gender, sum(user_gender) as 'sum' from `user` group by user_gender having sum(user_gender) > 20; -- INNER JOIN(內連線,或等值連線):獲取兩個表中欄位匹配關係的記錄。 -- LEFT JOIN(左連線):獲取左表所有記錄,即使右表沒有對應匹配的記錄。 -- RIGHT JOIN(右連線): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。 select * from `user` u inner join `educational` e on u.user_id = e.user_id limit 10; select * from `user` u, educational e where u.user_id = e.user_id limit 10; select * from `user` u left join `educational` e on u.user_id = e.user_id limit 10; select * from `user` u right join `educational` e on u.user_id = e.user_id limit 10;