如何在 MySQL 中对 GROUP BY 结果的 SELECT INTO 使用自动增量?

Posted

技术标签:

【中文标题】如何在 MySQL 中对 GROUP BY 结果的 SELECT INTO 使用自动增量?【英文标题】:How to use autoincrement for a SELECT INTO of a GROUP BY result in MySQL? 【发布时间】:2021-12-30 22:30:04 【问题描述】:

我找到了这个

SET @row_number = 0; 
SELECT 
    (@row_number:=@row_number + 1) AS num, 
    firstName, 
    lastName
FROM
    employees
ORDER BY firstName, lastName

解决方案here 用于将行号添加到 mysql 结果,但它不适用于GROUP BY-result,因为行号不是连续的,而是按分组的行数“跳跃” . 或者SELECT INTO是否有具体的解决方案,如果已经有自增列?

【问题讨论】:

不和你在一起,如果有一个 auto_increment 列你什么都不用做.. @P.Salmon 如何将其与SELECT INTO 一起使用? 请为您选择的表格添加表格定义以及示例数据和预期结果。 另外,我很难理解您为什么要分组以及要分组的内容。 @P.Salmon 这是一个普遍的问题。使用GROUP BY-clause 语句时如何进行连续计数? 【参考方案1】:

基本一样,你需要先GROUP By然后做row_number

SET @row_number = 0; 
SELECT 
    (@row_number:=@row_number + 1) AS num, firstName, lastName
FROM
    (SELECT 
        firstName, lastName
    FROM
        employees
    GROUP BY firstName , lastName) t1
ORDER BY firstName , lastName

有了 MySQL8.x,这变得容易多了。

我不太确定你所说的 SELECT INTO 是什么意思

但我认为你的意思是一个 outfile,因为你有 4 个多个值

SET @row_number = 0; 
SELECT 
(@row_number:=@row_number + 1) AS num, firstName, lastName
    INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
 FROM
    (SELECT 
        firstName, lastName
    FROM
        employees
    GROUP BY firstName , lastName) t1
ORDER BY firstName , lastName

如果您希望将选定的数据插入到另一个表中,这会是这样的

INSERT INTO table2
SELECT 
(@row_number:=@row_number + 1) AS num, firstName, lastName
    INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
 FROM
    (SELECT 
        firstName, lastName
    FROM
        employees
    GROUP BY firstName , lastName) t1 , (SELECT @row_number = 0) t2
ORDER BY firstName , lastName

【讨论】:

你忘记了INSERT-part... 选入什么? SELECT INTO 仅适用于循环和当您有 silge 行时。你没有,那么你到底想把什么发送到 ttable 到 Ort 你的意思是一个 Outfile 吗? 我需要从一个表中选择到另一个表中,但只是不同的数据。 内部 select 选择 uniwue 名称组合每一行都是由 group by 保证的。所以我没有得到你想要的东西,为什么 SELCT INTO idf 你想把它输入另一个表,你在问题中没有提到,所以 tka e4 selct 并像其他任何人一样使用它

以上是关于如何在 MySQL 中对 GROUP BY 结果的 SELECT INTO 使用自动增量?的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何先用group by分组,并将分组的结果distinct?

mysql在group by之后如何获取每一组中id最大的那一行

mysql在group by之后如何获取每一组中id最大的那一行

将 HQL 与 MySQL 一起使用,如何在 group by 之前对结果集进行排序,以便选择正确的记录?

MySQL在分组(GROUP BY)结果上使用ORDER BY

mysql group by 问题