【问题标题】:mysql adding data with special autoincrementmysql使用特殊的自动增量添加数据
【发布时间】:2020-04-29 11:29:31
【问题描述】:

我有一个关于如何在表 users_in_queue 中添加数据的问题?我想从另一个表中添加数据,但字段number_in_queue 必须像每个queue_id 的自动增量列。我的意思是表中的数据必须有这样的结构:


user_id | queue_id | number_in_queue

1 | 1 | 1

2 | 1 | 2

3 | 2 | 1

4 | 1 | 3

【问题讨论】:

  • 哪个mysql版本?
  • 您需要举例说明如何将数据添加到此表中。
  • mysql 5.7 使用 insert into @nbk 插入
  • 好的,那么你需要用户定义的变量。您填写两个 tbales 并在关系表中输入一行,现在您要更新该关系表吗?
  • @nbk 该表类似于连接表,其中包含两个表中的行和一些附加字段

标签: sql-insert mysql-5.7


【解决方案1】:

旧版本必须使用一些用户变量才能获得结果。

这就是为什么它很丑

CREATE Table user_in_queues(user_id INTEGER, queue_id INTEGER , number_in_queue  INTEGER)
INSERT INTO user_in_queues VALUES (1,1,0),(2,1,0),(3,2,0),(4,1,0),(5,2,0);
SELECT * FROM user_in_queues;
用户 ID | queue_id | number_in_queue ------: | --------: | --------------: 1 | 1 | 0 2 | 1 | 0 3 | 2 | 0 4 | 1 | 0 5 | 2 | 0
SELECT 
    user_id, queue_id, number_in_queue
FROM
    (SELECT 
        user_id,
            IF(@queue = queue_id, @rn:=@rn + 1, @rn:=1) number_in_queue,
            @queue:=queue_id queue_id
    FROM
        (SELECT 
        *
    FROM
        user_in_queues
    ORDER BY queue_id , user_id) t1, (SELECT @queue:=0) t2, (SELECT @rn:=0) t3) t4
ORDER BY user_id;
用户 ID | queue_id | number_in_queue ------: | --------: | --------------: 1 | 1 | 1 2 | 1 | 2 3 | 2 | 1 4 | 1 | 3 5 | 2 | 2
UPDATE user_in_queues u
SET number_in_queue = (SELECT 
    number_in_queue
FROM
    (SELECT 
        user_id,
            IF(@queue = queue_id, @rn:=@rn + 1, @rn:=1) number_in_queue,
            @queue:=queue_id queue_id
    FROM
        (SELECT 
        *
    FROM
        user_in_queues
    ORDER BY queue_id , user_id) t1, (SELECT @queue:=0) t2, (SELECT @rn:=0) t3) t4
    WHERE user_id = u.user_id AND queue_id = u.queue_id )
SELECT * FROM user_in_queues;
用户 ID | queue_id | number_in_queue ------: | --------: | --------------: 1 | 1 | 1 2 | 1 | 2 3 | 2 | 1 4 | 1 | 3 5 | 2 | 2

db小提琴here

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 2011-02-22
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多