欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql分組后如何獲取每個(gè)組的第一條數(shù)據(jù)

 更新時(shí)間:2023年08月11日 16:04:31   作者:Xu_jesse  
這篇文章主要介紹了mysql分組后如何獲取每個(gè)組的第一條數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql分組后獲取每個(gè)組的第一條數(shù)據(jù)

已知:subject表(主題表),主題表為樹(shù)形表

path字段,使用分隔符###,將主題編碼從一級(jí)到本級(jí)主題編碼,拼接起來(lái),便于查詢主題下子主題數(shù)據(jù)。

現(xiàn)在,需要根據(jù)path排序,聚合查詢一級(jí)主題的名稱和條數(shù)。

直接上結(jié)果:

兩種寫法:

一:內(nèi)層distinct

select tt.name as subjectName,path,count(*) as countNum from ?(select **distinct t.table_id_**, t.SUBJECT_ID_, s.name_ as name,path_,SUBSTRING_INDEX(path_,'###',1) as path from model_table t ?join hdgp_standard_subject s on t.SUBJECT_ID_ = s.id_ where t.IS_DELETE_ = 0 and !isnull(t.SUBJECT_ID_) and t.VERSION_TYPE_ = 'formal' order by s.path_ ?) tt group by tt.path ;

二:內(nèi)層group

select tt.name as subjectName,path,count(*) as countNum from ?(select t.SUBJECT_ID_, s.name_ as name,path_,SUBSTRING_INDEX(path_,'###',1) as path from model_table t ?join hdgp_standard_subject s on t.SUBJECT_ID_ = s.id_ where t.IS_DELETE_ = 0 and !isnull(t.SUBJECT_ID_) and t.VERSION_TYPE_ = 'formal' **group by t.table_id_** order by s.path_ ?) tt group by tt.path ;

解釋一下:

直接查詢是查不出想要的結(jié)果的,需要嵌套子查詢。但是只嵌套只查詢也是有問(wèn)題的,內(nèi)層循環(huán)也需要進(jìn)行過(guò)濾一下,可以使用distinct或者group ,再聯(lián)合order by 進(jìn)行排序,才能獲取想要的結(jié)果。

這樣寫,發(fā)現(xiàn)一個(gè)問(wèn)題,就是如果只有子主題的話,就查不出來(lái)一級(jí)主題了,改進(jìn)如下:(多關(guān)聯(lián)一遍,這樣子查詢都省了)

SELECT
? ? ss.NAME_ AS subjectName,
? ? count(*) AS countNum
FROM
? ? model_table t
? ? ? ? JOIN hdgp_standard_subject s ON t.SUBJECT_ID_ = s.id_
? ? ? ? JOIN hdgp_standard_subject ss ON SUBSTRING_INDEX( s.path_, '###', 1 ) = ss.CODE_
WHERE
? ? t.IS_DELETE_ = 0
? AND ! isnull( t.SUBJECT_ID_ )
? AND t.VERSION_TYPE_ = 'formal'
GROUP BY
? ? ss.code_

mysql獲取每組的第二條記錄

-- rank 第n次重復(fù), last_patient表中某一重復(fù)字段名稱
SELECT
 t.id,t.patient_id,t.patient_name
FROM (
	select 
		id,patient_id,patient_name,
	  if(@last_patient = a.patient_id,@rank := @rank+1,@rank := 1) AS "rank", -- 判斷 當(dāng)前patient_id與@last_patient是否相等,不相等rank為1,相等時(shí)rank加1,
		@last_patient := a.patient_id
	FROM lis_data_collection a,(SELECT @rank:=0,@last_patient:="") r -- 聲明兩個(gè)變量@rnak及@last_patient,并初始化
	ORDER BY a.id asc
) t 
where rank= 2
ORDER BY id ASC

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL中COALESCE函數(shù)示例詳解

    MySQL中COALESCE函數(shù)示例詳解

    COALESCE 是一個(gè)功能強(qiáng)大且常用的 SQL 函數(shù),主要用來(lái)處理 NULL 值和實(shí)現(xiàn)靈活的值選擇策略,能夠使查詢邏輯更清晰、簡(jiǎn)潔,這篇文章主要介紹了MySQL中COALESCE函數(shù),需要的朋友可以參考下
    2025-03-03
  • mysql缺少my.ini文件的最佳解決方法

    mysql缺少my.ini文件的最佳解決方法

    my.ini是MySQL數(shù)據(jù)庫(kù)中使用的配置文件,修改這個(gè)文件可以達(dá)到更新配置的目的,下面這篇文章主要給大家介紹了關(guān)于mysql缺少my.ini文件的最佳解決方法,需要的朋友可以參考下
    2024-01-01
  • MySQL進(jìn)階SELECT語(yǔ)法篇

    MySQL進(jìn)階SELECT語(yǔ)法篇

    從這個(gè)基本語(yǔ)法可以看出,最簡(jiǎn)單的SELECT語(yǔ)句是SELECT select_list,實(shí)際上利用這個(gè)最簡(jiǎn)單的SELECT語(yǔ)句,你也可以完成許多你期待的功能,首先你能利用它進(jìn)行MySQL所支持的任何運(yùn)算,例如:SELECT 1+1,它將返回2;其次,你也能利用它給變量賦值,而在PHP中,運(yùn)用SELECT語(yǔ)句的這種功能,你就可以自由地運(yùn)用MySQL的函數(shù)為PHP程序進(jìn)行各種運(yùn)算,并賦值給變量。在很多的時(shí)候,你會(huì)發(fā)現(xiàn)MySQL擁有許多比PHP更為功能強(qiáng)大的函數(shù)。
    2008-04-04
  • MySQL中獲取當(dāng)前時(shí)間格式的方法匯總

    MySQL中獲取當(dāng)前時(shí)間格式的方法匯總

    在MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)中,獲取時(shí)間是一個(gè)常見(jiàn)的需求,MySQL提供了多種方法來(lái)獲取當(dāng)前日期、時(shí)間和時(shí)間戳,并且可以對(duì)時(shí)間進(jìn)行格式化、計(jì)算和轉(zhuǎn)換,以下是一些常用的MySQL時(shí)間函數(shù)及其示例,需要的朋友可以參考下
    2024-06-06
  • MYSQL數(shù)據(jù)庫(kù)Innodb?引擎mvcc鎖實(shí)現(xiàn)原理

    MYSQL數(shù)據(jù)庫(kù)Innodb?引擎mvcc鎖實(shí)現(xiàn)原理

    這篇文章主要介紹了MYSQL數(shù)據(jù)庫(kù)Innodb?引擎mvcc鎖實(shí)現(xiàn)原理,但是mvcc?的實(shí)現(xiàn)原理是什么呢?下文我們就來(lái)實(shí)例說(shuō)明來(lái)mvcc?的實(shí)現(xiàn)原理,感興趣的小伙伴可以參考一下
    2022-05-05
  • Mysql的并發(fā)參數(shù)調(diào)整詳解

    Mysql的并發(fā)參數(shù)調(diào)整詳解

    大家好,本篇文章主要講的是Mysql的并發(fā)參數(shù)調(diào)整詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Mysql數(shù)據(jù)庫(kù)之Binlog日志使用總結(jié)(必看篇)

    Mysql數(shù)據(jù)庫(kù)之Binlog日志使用總結(jié)(必看篇)

    下面小編就為大家?guī)?lái)一篇Mysql數(shù)據(jù)庫(kù)之Binlog日志使用總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • C++連接使用MySQL的方法

    C++連接使用MySQL的方法

    這篇文章主要為大家詳細(xì)介紹了C++連接使用MySQL的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • mysql分表分庫(kù)的應(yīng)用場(chǎng)景和設(shè)計(jì)方式

    mysql分表分庫(kù)的應(yīng)用場(chǎng)景和設(shè)計(jì)方式

    為大家講述一下在mysql在什么到時(shí)候需要進(jìn)行分表分庫(kù),以及現(xiàn)實(shí)的設(shè)計(jì)方式。
    2017-11-11
  • MySQL sql_mode的使用詳解

    MySQL sql_mode的使用詳解

    這篇文章主要介紹了MySQL sql_mode的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-05-05

最新評(píng)論