1. 程式人生 > >Mysql按欄位分組取最大值記錄

Mysql按欄位分組取最大值記錄


要求:獲得按table1_id分組,並且age最大的記錄資訊,即2、3、5條方法:select * from (select * from table2 order by age desc) as a group by a.table1_id方法:select a.* from table2 as a where age = (select max(age) from table2 where a.table1_id=table1_id)方法:select a.* from table2 as a where not exists (select * from table2 where table1_id=a.table1_id and age>a.age)方法
:select a.* from table2 as a where exists (select count(*) from table2 where table1_id=a.table1_id and age>a.age having count(*)=0)

最近看了下評論都說第一個是錯的,現在我把表結構和資料都發出來。注意:這裡用的是mysql資料庫

CREATE TABLE `table2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `table1_id` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `aaa` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;



INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('1', '1', '10', 'a1');
INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('2', '1', '20', 'a2');
INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('3', '2', '33', 'a3');
INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('4', '2', '11', 'a4');
INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('5', '3', '55', 'a5');
INSERT INTO `table2` (`id`, `table1_id`, `age`, `aaa`) VALUES ('6', '3', '44', 'a6');
我不保證有啥特殊情況會產生啥其他問題,但就我上面的例子來說沒看出什麼毛病。

相關推薦

Mysql分組記錄

要求:獲得按table1_id分組,並且age最大的記錄資訊,即2、3、5條方法一:select * from (select * from table2 order by age desc) as a group by a.table1_id方法二:select a.* f

MySql字段分組記錄 [此博文包含圖片]

from htm 技術 方法 sin gid 最大值 count not 要求:獲得按table1_id分組,並且age最大的記錄信息,即2、3、5條 方法一: select * from (select * from table2 order by age

mysql技巧】某一分組(小)所在行的資料

mysql技巧--按某一欄位分組取最大(小)值所在行的資料,這是mysql資料庫程式設計師經常用到的在處理一些報表資料時候可以活用!那麼獵微網將總結幾種mysql查詢最大值 mysql查詢最小值的方法! mysql表圖如下 具體Php 連線mysql資料庫ph

mysql某一分組(小)所在行的資料

表結構指令碼: CREATE TABLE `student_grade` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NULL, `grade` in

MySQL(1)------group by 分組

首先表結構 create table sysstudentlibrarypool ( id int auto_increment primary key, score int null, time var

SQL查詢排序的

1.建表 -- Create table create table FRUIT ( id VARCHAR2(20), name VARCHAR2(20), class VARCHAR2(20), count VARCHAR2(20),

mysql中如何取得分組的資料?全網有效的方法

大家都知道,MySQL有分組查詢子句:group by 。面試官就問你了,不是讓你找到一個表中最大的值,而是讓你找到最大值的整行資料,這個時候簡單的分組是搞不定了。需要用到:inner join 子句 先說下inner join 子句的作用: 可以將一個表與另外一個表進行行資料的匹配。

關於SQL分組的幾中方式

假如我們有這麼一張表TbOrder具體資料結構如下圖: 如果想要查詢出每個customerId的最近一天的訂單記錄,也就是說要如下結果: 實現語句如下: select * from (select id, orderId, goodsName, orderDate,

SQL(oracle) 取得分組記錄

select * from  (select t.*, row_number() over(partition by 分組欄位 order by 排序欄位 desc ) rn from tablename t ) where rn=1 row_number() OVER (PARTITION BY C

關於MYSQL group by 分組時間的實現方法!

類如 有一個帖子的回覆表,posts( id , tid , subject , message , dateline ) , id 為 自動增長欄位, tid為該回復的主題帖子的id(外來鍵關聯), subject 為回覆標題, message 為回覆內容, dateline 為回覆時間,用UNIX 時間

mysql分組排序所在行,類似hive中row_number() over partition by

 如下圖, 計劃實現 :按照 parent_code 分組, 取組中code最大值所在的整條記錄,如紅色部分。(類似hive中: row_number() over(partition by)) select c.* from ( select a.*, (@i := ca

mysql分組排序所在行的實現方法

序號 sele 最大 logs tro ubi select order by 應該 如下圖, 計劃實現 :按照 parent_code 分組, 取組中code最大值所在的整條記錄,如紅色部分。(類似hive中: row_number() over(partition b

sql查詢表中某個相同,其他記錄

SELECT a.* FROM user a WHERE not EXISTS( select 1 from user where name = a.name and age > a.age ) 對user表進行掃描,編號(或姓名)相同情況下,沒有比前邊年齡大

分組查詢時間記錄的方法Oracle

sql語句: [sql]  create table dispatch_result  (      dr_id             &n

Hive多分組Top N且保留某列不相同記錄

  一、問題背景   1.先吐槽一下中國聯通自己的大資料開放能力平臺提供的計算叢集,Hive用的1.1,Spark用的1.5,Kafka0.8,我的天吶,原始的讓人抓狂,好多已經寫好的模型都要重寫......   2.資料格式   第一列是device_number,第

mysql 分隔符分成多行

SELECT a.id,SUBSTRING_INDEX(SUBSTRING_INDEX(a.continuity_classid,',',b.help_topic_id+1),',',-1) xubao

MySQL之表中重複第一個

有時在我們的SQL表中包含很多同名的資料,這樣可以將多維度的資料儲存的一個表中,但是對於查詢會帶來一些麻煩。 如上圖,如果我們只想取每個學校的第一條資料:我們可以使用DISTINCT去重 SQL: select DISTINCT history.school Fro

17.Elasticsearch單支援的字元數

在業務系統中,遇到過兩個問題: 問題1:設定為keyword型別的欄位,插入很長的大段內容後,報字元超出異常,無法插入。 問題2:檢索超過ignore_above設定長度的欄位後,無法返回結果。思考:Elasticsearch單欄位支援的最大字元數?設定ignore_abov

mysql 分組查詢優化

今天遇到個問題, mysql 取 表中分組,每項最大一條資料 ,假設表沒有索引,資料一百萬多 網上的寫法 百分之 90 是這樣的 SELECT id,max(t1.a),b FROM (SELECT id,a,b FROM table as t1 ORDER BY t1

48.reduce排序,去重,

prev col function red logs ngui ras value ber var arr = [2,4,1,-1,9] //取最大值 var maxValue = arr.reduce(function(a,b){ return a>