【问题标题】:Dynamically set column value while inserting in a table in mysql [duplicate]在 mysql 的表中插入时动态设置列值 [重复]
【发布时间】:2022-12-07 13:32:44
【问题描述】:

我需要从另一个具有现有数据的表中将值插入到新表中。

INSERT INTO newtable(ordering,customer_id,client) 
(SELECT 1,customer_number,client_name from oldtable);

当前工作流程:Id 列设置为自动递增,因此不包含在查询中。此查询将所有行中的排序列设置为 1。

我需要的是:排序列必须从 1 开始,然后在每行之后递增 1。但我不想将此列设置为自动递增。我可以通过简单的查询来实现还是需要准备一个存储过程/函数?如果是这样,如何?

【问题讨论】:

  • 生成序号的方式已经回答了here

标签: mysql sql database database-design sql-insert


【解决方案1】:

您可以在选择中使用带有行号的窗口函数来生成您想要的内容。

INSERT INTO newtable(ordering,customer_id,client) 
 SELECT    
    ROW_NUMBER() OVER(PARTITION BY [id]) AS row_num, customer_number,client_name  
FROM oldtable;  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2010-11-04
    • 2014-02-21
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多