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
内の他の制限を与えます10
私は1つの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');
ニースパズル!
を試してみてください。範囲を表示しますか?減算?他に何か? – Matthew
また、最初と最後を選択しますか?または最初に?または最後に?タイトルが混乱しています。 – Matthew
最後と最初のconcat。 – evolonm