从选择查询中插入查询值

3

我想从select query中设置值到insert query,应该如何操作。

insert into t_user (id,user_id) values (1, ) 
where user_id in (select id from user where id=123)

我希望从select查询结果中设置user_id的值,怎么在SQL中实现呢?


1
你已经知道要插入的ID,为什么还要去查找呢? - user1416258
我不知道USER_ID的值,我需要从其他表中获取这个值并插入到T_USER表中。 - harqs
@Geoist 我猜可能是因为如果ID为123的记录在数据库中不存在,那么就不想插入该记录... - Bob Vale
@harqs,您能具体说明这些值来自哪里吗? - Bob Vale
1
@harqs 然后您需要更好地解释您的问题,以便让我们了解您想要什么,而不是您认为您想要如何获得它。给我们一个未完成的 SQL 查询,然后说“我该怎么做”,这只会让我们去推断您想要什么。也许向我们展示您的数据结构,我们可能可以帮助您。 - user1416258
6个回答

3

试试这个:

INSERT INTO t_user (id, user_id)
SELECT 1, id 
FROM user
WHERE id = 123

选择 1,id 指定了什么? - harqs
@harqs,在您最初的查询中,您写了values(1, ),因此我假设您想要为所有来自select语句的结果集插入id = 1,但您可以将其更改为结果集中的任何选定值,而不是1。 - Mahmoud Gamal
@MahmoudGamal 在你的选择中遇到了问题。只选择一个id 123是奇怪的,如果有多个,则会插入(id = 1,user_id = 123)。问题不清楚。 - Jones

2
insert into t_user(id, user_id) select 1, id from user where id=123;

2
insert into t_user (id,user_id)
select 1,id from user where id=123

如果你的表只有两列,那么不需要再次指定列。
  insert into t_user
  select 1,id from user where id=123

1

在这种情况下,这有什么问题:

INSERT INTO t_user(id, user_id) VALUES(1,123);

我的意思是这个问题有点奇怪,如果你一开始就知道两个值,为什么还要选择呢。


我不知道USER_ID的值,我需要从其他表中获取这个值,并插入到T_USER表中。 - harqs
实际上,对于这个查询,你需要这样做。你从用户中检索id,其中id = 123,这意味着你总是检索id = 123,因此这两个查询是等价的,除非用户表根本不包含这样的记录。 - SPIRiT_1984

1
INSERT INTO t_user(id, user_id)
       SELECT id,1
       FROM user ;
       WHERE id = 123 

0
假设您有这样的表结构:
----------      -------
 articles        users
----------      -------
 rowid           rowid
 article_id      user_id
 user_id         user_name

还有一些类似这样的条目

---------------------------------
 users
---------------------------------
 rowid     user_id     user_name
---------------------------------
   1         124         joe
   7         12309       mark

根据另一个表的查找/引用插入值的正确方法如下:

 INSERT INTO articles (rowid, article_id, user_id)
     SELECT 1, 12392, user_id FROM users
     WHERE rowid = 7 

这将向文章中插入以下记录

---------------------------------
 articles
---------------------------------
 rowid     article_id    user_id 
---------------------------------
   1          12392       12309 

然而,我无法理解为什么您要使用这种数据库设计或插入方法。


然而,我无法理解为什么您要使用这种数据库设计或插入方法。我没有明白这一点,请澄清一下。 - harqs
解释为什么我的例子不是良好实践的定义已经超出了SO的范围。 - user1416258

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接