MySQL中distinct的使用方法【轉】

来源:https://www.cnblogs.com/KillBugMe/archive/2020/04/13/12692514.html
-Advertisement-
Play Games

一、基本使用 distinct一般是用來去除查詢結果中的重覆記錄的,而且這個語句在 、`insert delete update`中只可以在select中使用,具體的語法如下: 這裡的expressions可以是多個欄位。本文的所有操作都是針對如下示例表的: sql CREATE TABLE ( i ...


一、基本使用
distinct一般是用來去除查詢結果中的重覆記錄的,而且這個語句在selectinsertdeleteupdate中只可以在select中使用,具體的語法如下:

select distinct expression[,expression...] from tables [where conditions];

這裡的expressions可以是多個欄位。本文的所有操作都是針對如下示例表的:

CREATE TABLE `person` (
    `id`  int(11) NOT NULL AUTO_INCREMENT ,
    `name`  varchar(30) NULL DEFAULT NULL ,
    `country`  varchar(50) NULL DEFAULT NULL ,
    `province`  varchar(30) NULL DEFAULT NULL ,
    `city`  varchar(30) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`)
)ENGINE=InnoDB;

1.1 只對一列操作

這種操作是最常見和簡單的,如下:

select distinct country from person

結果如下:

1.2 對多列進行操作

select distinct country, province from person

結果如下:

從上例中可以發現,當distinct應用到多個欄位的時候,其應用的範圍是其後面的所有欄位,而不只是緊挨著它的一個欄位,而且distinct只能放到所有欄位的前面,如下語句是錯誤的:

SELECT country, distinct province from person; // 該語句是錯誤的

拋出錯誤如下:

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘DISTINCT province from person’ at line 1

1.3 針對NULL的處理

從1.1和1.2中都可以看出,distinct對NULL是不進行過濾的,即返回的結果中是包含NULL值的。

1.4 與ALL不能同時使用

預設情況下,查詢時返回所有的結果,此時使用的就是all語句,這是與distinct相對應的,如下:

select all country, province from person

結果如下:

1.5 與distinctrow同義

select distinctrow expression[,expression...] from tables [where conditions];

這個語句與distinct的作用是相同的。

1.6 對*的處理

*代表整列,使用distinct對*操作

select DISTINCT * from person  

相當於

select DISTINCT id, `name`, country, province, city from person;

文章轉自:https://blog.csdn.net/lmy86263/article/details/73612020


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • shell腳本練習案例 案例一:通過位置變數創建系統賬戶及密碼 分析 (1)通過位置變數創建 Linux 系統賬戶及密碼 (2)創建用戶,111為第一個變數 (3)為用戶設置密碼,123456為第二個變數 實現 #!/bin/bash useradd "111"echo "123456" | pas ...
  • 回到目錄 比起共基放大電路,共射放大電路稍微要複雜一些,有若幹種偏置形式,但萬變不離其宗,分析的基本原理都是一致的,本小節我們對三種典型的共射偏置形式進行交流分析,分別是:固定偏置、射極偏置(改進的固定偏置)、分壓偏置。 1. 固定偏置 固定偏置的共射放大電路如下圖所示: 圖4-6.01 註意在上圖 ...
  • 看看上篇文章中的虛擬開機後,是否可以ping通網路。 相關命令:ping www.baidu.com i.ping通後Ctrl+C結束; ii.如果ping不通: cd到 /etc/sysconfig/network-scripts文件夾下,ls一下文件列表: 相關命令: cd /etc/sysco ...
  • 在 Linux 中有很多 GUI 應用程式可以查看圖像,但是這對經常使用命令行來工作的人可能會覺得很繁瑣。今天要介紹的是 3 個實用的 CLI 圖像查看器來在終端上查看圖像,讓那些使用 CLI 的朋友能更加高效地工作。 1. FIM FIM 是 Fbi IMproved 的縮略語,意思是 Fbi 改 ...
  • 在 Linux 操作系統下,幾乎所有的軟體均通過RPM 進行安裝、卸載及管理等操作。RPM 的全稱為Redhat Package Manager ,是由Redhat 公司提出的,用於管理Linux 下軟體包的軟體。Linux 安裝時,除了幾個核心模塊以外,其餘幾乎所有的模塊均通過RPM 完成安裝。R ...
  • 準備工作:VMwareWorkstationCentOS-7-x86_64-DVD-1908.iso第一步、創建虛擬機1、文件-新建虛擬機2、選擇自定義--下一步3、選擇虛擬機硬體相容性--【預設】下一步4、稍後安裝操作系統--下一步5、選擇Linux--版本CentOS 7 64位--下一步6、虛 ...
  • "1. 產生原因" "2. 導致問題" "3. Nginx" "3.1 長連接" "4. 解決方案" "5 .參考" 產生原因 TCP 連接關閉時,會有 4 次通訊(四次揮手),來確認雙方都停止收發數據了。如上圖,主動關閉方,最後發送 ACK 時,會進入 TIME_WAIT 狀態,要等 2MSL 時 ...
  • 一、總體設計 初來公司時,公司還沒有大數據,我是作為大數據架構師招入的,結合公司的線上和線下業務,制定瞭如下的大數據架構路線圖。 二、大數據任務開發和調度平臺架構設計 在設計完總體架構後,並且搭建完hadoop/yarn的大數據底層計算平臺後, 按照總體架構設計思路, 首先需要構建的就是大數據開發平 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...