[英]Can I select last, first row of GROUP BY query in MySQL?
[使用MySQL]有一個表消息,其中包含如下所示的數據:
Id Name Other_Columns
-------------------------
1 A A1
2 A A2
3 A A3
4 B B1
5 B B2
6 C C1
7 A A4
8 A A5
什么查詢將返回以下結果?
1 A (A3 - A1)
4 B (B2 - B1)
6 C (C1 - C1)
7 A (A5 - A4)
SELECT Bottom_one.Id,Bottom_one.Name ,Bottom_one.Other_Columns
FROM `T1` as Top_one
Right JOIN T1 AS Bottom_one
ON Top_one.Id = Bottom_one.Id - 1
WHERE Top_one.Name IS NULL OR Top_one.Name != Bottom_one.Name
得出接近的結果:
Id Name Other_Columns
1 A A1
4 B B1
6 C C1
7 A A4
和這個 :
SELECT Top_one.Id,Top_one.Name ,Top_one.Other_Columns
FROM `T1` as Top_one
Left JOIN T1 AS Bottom_one
ON Top_one.Id = Bottom_one.Id - 1
WHERE Bottom_one.Name IS NULL OR Top_one.Name != Bottom_one.Name
在Other_Columns中給出其他限制
Id Name Other_Columns
3 A A3
5 B B2
6 C C1
8 A A5
我不知道如何將它們組合成一個SQL語句。 (當然,以編程方式進行是很簡單的)
如果有人要玩的話,這是一個表轉儲。
CREATE TABLE IF NOT EXISTS `T1` (
`Id` int(11) NOT NULL auto_increment,
`Name` varchar(255) NOT NULL,
`Other_Columns` varchar(255) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `T1` (`Id`, `Name`, `Other_Columns`) VALUES
(1, 'A', 'A1'),
(2, 'A', 'A2'),
(3, 'A', 'A3'),
(4, 'B', 'B1'),
(5, 'B', 'B2'),
(6, 'C', 'C1'),
(7, 'A', 'A4'),
(8, 'A', 'A5');
好拼圖!
嘗試這個
select min(ID) as FirstId,Name,
Concat(max(Other_columns),"-",min(Other_Columns)) as Ans
from msgtable
group by Name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.