mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT
MySQL SELECT語句簡介
SELECT語句允許您從表或視圖獲取數據。像電子表格一樣,表由行和列組成。通常,您需要查看表中的數據。這時候你可以使用mysql數據庫中的select語句進行查詢數據。
讓我們來看看SELECT語句的語法:SELECT
column_1, column_2, ...
FROM
table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;
該SELECT語句由幾個子句組成,如下面的列表所述:SELECT后面以逗號分隔的字段名稱或星號(*),表示要返回的列。
FROM指定要查詢數據的表或視圖。
JOIN基于某些連接條件從其他表獲取數據。
WHERE過濾結果集中的行。
GROUP BY將數據分組并對每個組應用聚合函數。
HAVING基于GROUP BY子句定義的組篩選組。
ORDER BY指定用于排序字段。
LIMIT約束返回的行數。
SELECT和FROM查詢語句中必須的。其他部分是可選的。
MySQL SELECT語句示例
SELECT語句允許您通過在SELECT子句中指定逗號分隔的列的列表來查詢表的部分數據。例如,如果您只想查看員工的名字,姓氏和職位,您可以使用以下查詢:
SELECT
lastname, firstname, jobtitle
FROM
employees;
如果要獲取表中所有列的employees數據,你可以列出該SELECT子句中的所有列名稱,也可以只需使用星號(*),星號(*)表示查詢表中的所以列。SELECT * FROM employees;
上面SQL查詢語句返回表employees中的所有列和行。
在測試中我們可以使用星號(*)代替表中的所以列,但實際上,您應該列出要明確獲取數據的列,原因如下:星號(*)會返回沒用的字段數據。它在MySQL數據庫服務器和應用程序之間產生不必要的I/O磁盤和網絡流量。
如果您明確指定列,則結果集更可預測,更易于管理。想象一下,如果有人為表添加了很多列,當你使用星號(*)時,你會得到一個不同于你期望的結果集。
使用星號(*)可能會向未經授權的用戶公開敏感信息。
MySQL DISTINCT子句
當從表中查詢數據時,您可能會得到重復的行。為了刪除這些重復行,可以在SELECT語句中使用DISTINCT?子句。
使用DISTINCT?子句的語法如下:SELECT DISTINCT
columns
FROM
table_name
WHERE
where_conditions;
有些員工擁有相同的姓氏 ??Bondur,Firrelli等等。
要刪除重復的姓氏,請將DISTINCT?語句添加到SELECT語句中?,如下所示:
當我們使用DISTINCT子句時,重復的姓氏在結果集中被去除。
MySQL DISTINCT與NULL
如果一個列(字段)具有NULL值,并且您在該列(字段)中使用了DISTINCT?子句,那么MySQL將保留一個NULL值并消除另一個值,因為DISTINCT?子句將所有NULL值視為相同的值。
例如,在customers表中,我們有許多數據行的?state列為NULL。當我們使用DISTINCT?子句查詢客戶的state時,我們將看到state的唯一NULL值,mysql語句如下:SELECT DISTINCT
state
FROM
customers;
在MySQL DISTINCT中使用多列
您可以對多個列使用DISTINCT子句。在這種情況下,MySQL使用所有列的組合來確定結果集中行的唯一性。
DISTINCT子句與GROUP BY子句
如果在SELECT語句中使用了GROUP BY子句而沒有不使用聚合函數,則GROUP BY子句的作用類似于DISTINCT?子句。
以下語句使用GROUP BY子句來查詢customers表中客戶的唯一state。SELECT
state
FROM
customers
GROUP BY state;
您也可以通過使用以下DISTINCT子句來實現類似的結果。
一般來說,DISTINCT?子句是特殊情況下的GROUP BY子句。DISTINCT?子句和GROUP BY子句之間的區別是GROUP BY子句對結果集進行排序,而DISTINCT?子句不排序。
如果將ORDER BY添加到?DISTINCT子句的語句中,則結果集將進行排序,并且與使用GROUP BY子句的語句返回結果相同。SELECT DISTINCT
state
FROM
customers
ORDER BY state;
SELECT DISTINCT
state
FROM
customers
ORDER BY state;
MySQL DISTINCT與聚合函數
您可以使用帶有聚合函數的DISTINCT(如SUM,AVG和COUNT)子句,在刪除重復數據之后,MySQL將聚合函數應用于結果集中。
例如,要計算美國客戶的唯一state,請使用以下查詢:SELECT
COUNT(DISTINCT state)
FROM
customers
WHERE
country = 'USA';
SELECT DISTINCT
state
FROM
customers
ORDER BY state;
帶有LIMIT的MySQL DISTINCT
在使用帶有LIMIT的DISTINCT子句的情況下,MySQL只返回LIMIT范圍內的唯一不重復的結果集。
以下mysql語句查詢customers表中的前5個非空的唯一state。
SELECT DISTINCT
state
FROM
customers
WHERE
state IS NOT NULL
LIMIT 5;
總結
以上是生活随笔為你收集整理的mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 链接占用太多_Java程序链接
- 下一篇: 卸载不掉的软件怎么办 如何彻底卸载软件