gpt4 book ai didi

MySQL在从另一个表中选择时插入到具有自动增量的表中

转载 作者:IT老高 更新时间:2023-10-29 00:01:59 26 4
gpt4 key购买 nike

我有一个带有自增主键的表:

create table rt_table
(
rtID int PRIMARY KEY AUTO_INCREMENT,
rt_user_id BIGINT, /*user being retweeted*/
rt_user_name varchar(70), /*user name of rt_user_id*/
source_user_id BIGINT, /*user tweeting rt_user_id*/
source_user_name varchar(70), /*user name of source_user_id*/
tweet_id BIGINT, /*fk to table tweets*/

FOREIGN KEY (tweet_id) references tweets(tweet_id)
);

我希望从另一个表的部分填充此表:

insert into rt_table 
select rt_user_id, (select user_name from users u where u.user_id = t.rt_user_id),
source_user_id, (select user_name from users u where u.user_id = t.source_user_id),
tweet_id
from tweets t
where rt_user_id != -1;

我收到一个错误,指出列数不匹配,这是因为主键(这是一个自动递增的值,因此不需要设置)。我该如何解决这个问题?

最佳答案

您需要在 insert 语句中明确列出列:

insert into rt_table (rt_user_id, rt_user_name, source_user_id, source_user_name, tweet_id)
select rt_user_id, (select user_name from users u where u.user_id = t.rt_user_id),
source_user_id, (select user_name from users u where u.user_id = t.source_user_id),
tweet_id
from tweets t
where rt_user_id != -1;

此外,我认为使用显式连接比嵌套选择更好:

insert into rt_table (rt_user_id, rt_user_name, source_user_id, source_user_name, tweet_id)
select t.rt_user_id, u.user_name, t.source_user_id, su.user_name, t.tweet_id
from tweets t left outer join
users u
on t.rt_user_id = u.user_id left outer join
users su
on t.source_user_id = su.user_id
where rt_user_id != -1;

这通常(但不总是)帮助优化器找到最佳查询计划。

关于MySQL在从另一个表中选择时插入到具有自动增量的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773832/

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