gpt4 book ai didi

Mysql按字段从表循环分组中选择记录

转载 作者:行者123 更新时间:2023-11-29 04:36:39 24 4
gpt4 key购买 nike

我有一张包含产品的表格。该表有一个 companyId 字段。让我们这样描述它:

id --- companyId
1 | 2
2 | 3
3 | 4
4 | 2
5 | 3
6 | 1
7 | 4

我想选择所有按 companyId 排序但公司 id 循环的记录,如下所示:

id --- companyId
6 | 1
1 | 2
2 | 3
3 | 4
4 | 2
5 | 3
7 | 4

我怎样才能实现它?

最佳答案

您可以使用 MySQL 用户定义的变量

SELECT 
t.id,
t.companyId
FROM
(
SELECT
*,
IF(@sameCompany = companyId , @rn := @rn + 1,
IF(@sameCompany := companyId, @rn := 1,@rn := 1)
) AS rn
FROM companytable
CROSS JOIN (SELECT @sameCompany := -1, @rn := 1) AS var
ORDER BY companyId
) AS t
ORDER BY t.rn , t.companyId

See Demo


解释:

首先根据 companyId 对数据进行排序,以便相同的公司 ID 粘在一起。

现在沿着这个排序结果走走,每次看到相同的 companyId 时分配一个顺序增加的行号,否则分配 1 作为 行号.

现在将这个排序结果命名为t

最后根据行号升序和companyId升序对这些数据(t)进行排序。

关于Mysql按字段从表循环分组中选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com