如何在Mysql中同时获取数据
我有如下表格:如何在Mysql中同时获取数据,mysql,Mysql,我有如下表格: id----image----type 1-----a.png----1 2-----b.png----1 3-----c.png----2 4-----d.png----1 5-----e.png----2 | id | image | type | |----|-------|------| | 1 | a.png | 1 | | 3 | c.png | 2 | | 2 | b.png | 1 | | 5 | e.png |
id----image----type
1-----a.png----1
2-----b.png----1
3-----c.png----2
4-----d.png----1
5-----e.png----2
| id | image | type |
|----|-------|------|
| 1 | a.png | 1 |
| 3 | c.png | 2 |
| 2 | b.png | 1 |
| 5 | e.png | 2 |
| 4 | d.png | 1 |
现在我想按以下顺序获取数据(首先是类型1,然后是类型2,然后是类型1,依此类推):
那么如何做到这一点呢
到目前为止,我有以下疑问:
SELECT
*
FROM `table`
WHERE (TYPE =1 OR TYPE =2)
ORDER BY TYPE
例如
例如
我想您可以通过
MySQL用户定义变量的帮助来实现这一点
SELECT
t.id,
t.image,
t.type
FROM
(
SELECT
id,
image,
type ,
IF(@sameType = type, @rn := @rn + 1,
IF(@sameType := type, @rn := 1, @rn := 1)
) AS rowNumber
FROM your_table
CROSS JOIN (SELECT @sameType := 0, @rn := 0) var
ORDER BY type , image
) AS t
ORDER BY t.rowNumber
说明:
首先根据类型
和图像
对结果集进行排序
现在为上面的每一个排序行分配一个行号。每次发现新的类型时,行号从1
开始,否则将递增
这样您将得到一个表t
现在,如果您只是根据t.rowNumber
对结果重新排序,那么您将得到每种类型的第一行,然后是第二行,依此类推
输出:
对给定的示例输入运行上述查询,您将得到如下输出:
id----image----type
1-----a.png----1
2-----b.png----1
3-----c.png----2
4-----d.png----1
5-----e.png----2
| id | image | type |
|----|-------|------|
| 1 | a.png | 1 |
| 3 | c.png | 2 |
| 2 | b.png | 1 |
| 5 | e.png | 2 |
| 4 | d.png | 1 |
我想您可以通过MySQL用户定义变量的帮助来实现这一点
SELECT
t.id,
t.image,
t.type
FROM
(
SELECT
id,
image,
type ,
IF(@sameType = type, @rn := @rn + 1,
IF(@sameType := type, @rn := 1, @rn := 1)
) AS rowNumber
FROM your_table
CROSS JOIN (SELECT @sameType := 0, @rn := 0) var
ORDER BY type , image
) AS t
ORDER BY t.rowNumber
说明:
首先根据类型
和图像
对结果集进行排序
现在为上面的每一个排序行分配一个行号。每次发现新的类型时,行号从1
开始,否则将递增
这样您将得到一个表t
现在,如果您只是根据t.rowNumber
对结果重新排序,那么您将得到每种类型的第一行,然后是第二行,依此类推
输出:
对给定的示例输入运行上述查询,您将得到如下输出:
id----image----type
1-----a.png----1
2-----b.png----1
3-----c.png----2
4-----d.png----1
5-----e.png----2
| id | image | type |
|----|-------|------|
| 1 | a.png | 1 |
| 3 | c.png | 2 |
| 2 | b.png | 1 |
| 5 | e.png | 2 |
| 4 | d.png | 1 |
这种排序背后的逻辑是什么。或者更确切地说,这个顺序到底是什么?我有一个幻灯片,我必须按类型显示图像。表示类型1的第一个图像,然后是类型2的第二个图像,依此类推。此顺序背后的逻辑是什么。或者更确切地说,这个顺序到底是什么?我有一个幻灯片,我必须按类型显示图像。表示类型1的第一个图像,然后是类型2的第二个图像,依此类推。