【Sql server】假設有三個字段a,b,c 以a和b分組,如何查詢a和b唯一,但是c不同的記錄

歡迎來到《小5講堂》,大家好,我是全棧小5。
這是《Sql Server》系列文章,每篇文章將以博主理解的角度展開講解,
特別是針對知識點的概念進行敘說,大部分文章將會對這些概念進行實際例子驗證,以此達到加深對知識點的理解和掌握。
溫馨提示:博主能力有限,理解水平有限,若有不對之處望指正!

在這里插入圖片描述

目錄

  • 前言
  • 創建表
  • 模擬數據
  • 分組查詢
    • 城市分組
    • 城市區縣分組
    • 代理商維度
    • 不同代理
  • 小知識點
    • identity
    • 刪除數據
    • 分組查詢原則
  • 文章推薦

前言

最近在做數據修改,有時候太久沒寫sql語句,突然想通過子查詢的方式去批量更新數據的時候,
還是有點不知所措,那就一步一步來吧,也寫篇文章梳理和總結下,畢竟也是基本的操作加深印象。
在做數據批量修改時,有個關鍵點,就是分組查詢后找出另外一個字段不同值得記錄,因此本篇文章就針對這個查詢梳理一遍。

創建表

假設有一張表,有三個主要字段,城市名稱、區縣名稱、代理商名稱。
創建表時,習慣性給表加一個id編號,并且是自增字段,有個序號感覺看起來舒服,hhh~~~

create table test_name
(id int identity(1,1),        -- 自增編號city_name nvarchar(50),        -- 城市名稱area_name nvarchar(50),        -- 區縣名稱agent_name nvarchar(50)        -- 代理商名稱
)

模擬數據

insert into test_name(city_name,area_name,agent_name) values
('廣州市','白云區','張三'),
('廣州市','白云區','張三'),
('廣州市','白云區','李四'),
('廣州市','白云區','王五'),
('深圳市','龍崗區','張三')

上面是一次性添加多條,所以只需要寫一個values即可,也可以分開寫。
分開寫后,就能看出來重復啰嗦,所以才會有一些簡寫的方式。

insert into test_name(city_name,area_name,agent_name) 
values
('廣州市','白云區','張三')insert into test_name(city_name,area_name,agent_name) 
values('廣州市','白云區','張三')insert into test_name(city_name,area_name,agent_name) 
values('廣州市','白云區','李四')insert into test_name(city_name,area_name,agent_name) 
values('廣州市','白云區','王五')insert into test_name(city_name,area_name,agent_name) 
values('深圳市','龍崗區','張三')

分組查詢

城市分組

select city_name from test_name group by city_name

在這里插入圖片描述

城市區縣分組

select city_name,area_name from test_name group by city_name,area_name

在這里插入圖片描述

代理商維度

城市、區縣、代理商,三者組合唯一查詢

select * from test_name
select city_name,area_name,agent_name from test_name group by city_name,area_name,agent_name

在這里插入圖片描述

不同代理

同城市區縣,但不同代理商的記錄。

select city_name 城市,area_name 區縣,count(agent_name) 過濾前代理商數量,count(distinct agent_name) 過濾后代理商數據
from test_name 
group by city_name,area_name
having count(distinct agent_name)>1

在這里插入圖片描述

小知識點

identity

在 SQL Server 中,Identity 是一種特殊的屬性,用于指定某一列是自動生成的數字列。
通過設置 Identity 屬性,可以讓 SQL Server 自動生成唯一的數字值,并自動填充到指定的列中。
這樣可以很方便地為表中的每一行生成一個唯一的標識符。
在創建表時,可以通過以下語法向列添加 Identity 屬性:

CREATE TABLE your_table
(column_name INT IDENTITY(1,1) PRIMARY KEY,-- other columns
);

在這個例子中,column_name 是指定了 Identity 屬性的列名,INT 是數據類型,IDENTITY(1,1) 表示以1為起始值,1為遞增值自動為每個新行生成一個唯一值,PRIMARY KEY 用來指定此列為主鍵。
當插入數據時,不需要為 Identity 列指定具體的值,數據庫會自動生成并填充對應的值。如果需要獲取自動生成的 Identity 值,可以使用 SCOPE_IDENTITY() 函數或者 @@IDENTITY 系統變量。

刪除數據

基于上面自增編號知識點,來了解下delete和truncate刪除數據的最大區別
delete 表名 可按條件刪除或者批量刪除記錄,并且自增id編號會繼續從當前記錄值開始算,比如最新編號為10,即使刪除編號10的記錄,那么新插入一條記錄,編號為11
truncate table 表名,全表刪除,id自增編號重新開始從1或者指定規則計算

分組查詢原則

選擇列表中的列 ‘test_name.area_name’ 無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中。
基本原則就是,查詢的字段值必須要在分組里,否則無效。
在這里插入圖片描述

文章推薦

【Sql Server】新手一分鐘看懂在已有表基礎上修改字段默認值和數據類型

【數據庫】Sql Server數據遷移,處理自增字段賦值

【數據類型】C#和Sql Server、Mysql、Oracle等常見數據庫的數據類型對應關系

總結:溫故而知新,不同階段重溫知識點,會有不一樣的認識和理解,博主將鞏固一遍知識點,并以實踐方式和大家分享,若能有所幫助和收獲,這將是博主最大的創作動力和榮幸。也期待認識更多優秀新老博主。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712197.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2_SQL

文章目錄 SQL數據完整性實體完整性域完整性參照完整性default(默認值)comment(注釋) 多表設計一對一一對多多對多數據庫三大范式第一范式:原子性第二范式:唯一性第三范式:數據的冗余 多表查詢連…

JQMobile Loader Widget 遮罩層改造

最近在用jqmobile 做一個混合APP項目時候用到 jqmobile1.4.3提供的Loader Widget控件,但是這個控件本身是一個loading彈出層,這個彈出層彈出之后,用戶還是可以去點擊按鈕,重復發送請求,為了防止重復提交,我想了兩種辦法, 1,在loading彈出層彈出之后,讓按鈕不可用.但是form表單…

記錄SSM項目集成Spring Security 4.X版本 之 加密驗證和記住我功能

目錄 前言 一、用戶登錄密碼加密認證 二、記住我功能 前言 本次筆記的記錄是接SSM項目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架實現登錄和主頁菜單顯示-CSDN博客https://blog.csdn.net/u011529483/article/details/136255768?spm1001.2014.3001.5502 文章之后補…

Python列表的合并、重復、判斷與切片操作你學會了嗎

1.合并列表 通過 實現 list1 ["佛跳墻", "腸粉", "刀削面", "烤鴨"]list2 [32, 4, 5, 7.43, True]list3 list1 list2print(list3) # [佛跳墻, 腸粉, 刀削面, 烤鴨, 32, 4, 5, 7.43, True] 2.重復輸出列表中的元素 通過 * 實…

fastadmin 前端日期字段的添加和編輯

引言 fastadmin 項目中如果需要用到datetime字段的維護&#xff0c;可做如下處理&#xff1a; 1. add.html <div class"form-group"><label class"control-label col-xs-12 col-sm-2">{:__(開始)}:</label><div class"col-x…

vue3 中 主題定制

vue3 中 主題定制 背景 做多主題定制&#xff0c;黑/白 &#xff0c;里面還要再分各種顏色&#xff0c;每次進來都要記住上次的主題設置 效果圖 一、目錄結構 ├── generated │ ├── theme │ │ └── dark-yellow.ts │ │ └── dark-orange.ts │ │…

C++考試成績統計(類實現)

題目&#xff1a;有三名同學&#xff0c;在一次考試中三科成績分別如下表&#xff0c;請輸出三名同學的平均成績&#xff1a; 語文數學英語張三100100100李四9050100王五607080 #include <iostream> #include <string> /*考試成績統計*/ using namespace std;cla…

力扣:120. 三角形最小路徑和

動態規劃 1.先定義dp數組在下標i和下標j時的最小路徑和 &#xff0c;之后初始化dp數組值dp【0】【0】triangle.get(0).get(0)。再用for循環來遍歷數組dp【】的i&#xff0c;并賦值每行的下標為0的dp數組。之后再用for循環遍歷dp【i】【】的j&#xff0c;遞推公式來計算dp【i】…

「算法」常見位運算總結

位運算符 異或 按位異或可以實現無進位相加&#xff0c;所謂無進位相加&#xff0c;就是在不考慮進位的情況下將兩個數相加&#xff08;后面有道題需要用到這種操作&#xff09; 異或的運算律 ①a ^ 0 a ②a ^ a 0 ③a ^ b ^ c a ^ ( b ^ c ) 有符號右移>> 將一個…

IDEA切換 Springboot初始化 URL

&#x1f339;作者主頁&#xff1a;青花鎖 &#x1f339;簡介&#xff1a;Java領域優質創作者&#x1f3c6;、Java微服務架構公號作者&#x1f604; &#x1f339;簡歷模板、學習資料、面試題庫、技術互助 &#x1f339;文末獲取聯系方式 &#x1f4dd; 往期熱門專欄回顧 專欄…

Android基礎控件介紹

在Android應用程序開發中&#xff0c;使用基礎控件是非常常見的。這些控件允許您在用戶界面中顯示文本、圖像、按鈕等元素&#xff0c;以及接收用戶輸入。本文將介紹幾種常見的基礎控件&#xff0c;并給出每個控件在示例XML中使用的屬性的詳細說明。 1. TextView TextView 是…

云計算 2月20號 (認識操作系統)

1、認識操作系統 計算機系統的組成 知識點1&#xff1a;沒有軟件系統的計算機稱之為"裸機" 知識點2&#xff1a;裸機提供基本的可計算性資源 知識點3&#xff1a;操作系統是最靠近硬件的軟件層&#xff0c;負責管理和控制計算機硬件。 計算機硬件組成五大部件 運算器…

Chat GPT:智能對話的下一步

Chat GPT&#xff1a;智能對話的下一步 介紹 Chat GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一種基于Transformer架構的強大對話模型&#xff0c;可以產生自然流暢的回答&#xff0c;并實現人機對話的感覺。本文將探討Chat GPT在智能對話領域的影響和…

代碼隨想錄算法刷題訓練營day29:LeetCode(491)遞增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代碼隨想錄算法刷題訓練營day29&#xff1a;LeetCode(491)遞增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II LeetCode(491)遞增子序列 題目 代碼 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; im…

2024年AI全景預測

歡迎來到 2024 年人工智能和技術的可能性之旅。 在這里&#xff0c;每一個預測都是一個潛在的窗口&#xff0c;通向充滿創新、變革、更重要的是類似于 1950 年代工業革命的未來。 20 世紀 50 年代見證了數字計算的興起&#xff0c;重塑了行業和社會規范。 如今&#xff0c;人工…

老衛帶你學---leetcode刷題(242. 有效的字母異位詞)

242. 有效的字母異位詞 問題 給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意&#xff1a;若 s 和 t 中每個字符出現的次數都相同&#xff0c;則稱 s 和 t 互為字母異位詞。 示例 1: 輸入: s “anagram”, t “nagaram” 輸出: t…

力扣1143. 最長公共子序列(動態規劃)

Problem: 1143. 最長公共子序列 文章目錄 題目描述思路復雜度Code 題目描述 思路 我們統一標記&#xff1a;str1[i]代表text1表示的字符數組&#xff0c;str2[j]代表text2表示的字符數組&#xff1b;LCS代表最長的公共子序列&#xff1b;&#xff08;我們易得只有str1[i]和str…

Flutter中Widget的生命周期

Widget生命周期&#xff1a; createState-initState-didChangeDependency-build-deactive-dispose 可通過WidgetsBinding類對widget生命周期的回調進行監控。 createState&#xff1a;StatefulWidget 中用于創建 State&#xff1b; initState&#xff1a;State 的初始化操作&am…

CLion遠程調試C++

文件映射到 可以右鍵文件夾選擇重新Cmake 編譯

xsslabs第七關

源碼 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不錯&#xff01;"…