如何在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的第二个图像,依此类推。