我有一个名为Mydata的表,如下所示
id name type
--------------------------------------------
1 vinu 1
2 rinu 2
3 dilu 1
4 raju 2
5 manu 3
6 saju 3
7 ragu 3
8 sonu 1
9 sam 1
10 rag 1
--------------------------------------------我想用交替的type打印记录,例如:
类型为1的第一行
类型为2的第二行
第三行,类型=3
第4行type=1
第5行type=2等等
所需结果如下
id name type
-----------------------------------------
1 vinu 1
2 rinu 2
5 manu 3
3 dilu 1
4 raju 2
6 saju 3
8 sonu 1
7 ragu 3
9 sam 1
10 rag 1
----------------------------------------------发布于 2015-10-12 07:28:54
样本数据:
CREATE TABLE t
(`id` int, `name` varchar(4), `type` int)
;
INSERT INTO t
(`id`, `name`, `type`)
VALUES
(1, 'vinu', 1),
(2, 'rinu', 2),
(3, 'dilu', 1),
(4, 'raju', 2),
(5, 'manu', 3),
(6, 'saju', 3),
(7, 'ragu', 3),
(8, 'sonu', 1),
(9, 'sam', 1),
(10, 'rag', 1)
;查询:
SELECT id, name, type FROM (
SELECT
t.*,
@rn := IF(@prev_type = type, @rn + 1, 1) AS rownumber,
@prev_type := type
FROM
t
, (SELECT @rn := 0, @prev_type := NULL) var_init_subquery
ORDER BY type
) sq
ORDER BY rownumber, type结果:
| id | name | type |
|----|------|------|
| 1 | vinu | 1 |
| 4 | raju | 2 |
| 5 | manu | 3 |
| 9 | sam | 1 |
| 2 | rinu | 2 |
| 7 | ragu | 3 |
| 8 | sonu | 1 |
| 6 | saju | 3 |
| 10 | rag | 1 |
| 3 | dilu | 1 |警告:
当您有大量数据时,不要期望这是性能良好的。它在做全表扫描。
当您对这个变量的工作方式感兴趣时,这里有一个人工录入可以阅读。
https://stackoverflow.com/questions/33074903
复制相似问题