如何在 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 使用自动增量?的主要内容,如果未能解决你的问题,请参考以下文章