2012-06-18 150 views
1

我想从select query设置值为insert query,如何执行此操作。从选择查询插入查询值

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

我想设置的user_id从选择查询值的价值,如何做到这一点的SQL?

+1

你已经知道你要插入的ID。为什么打扰呢? – 2012-06-18 11:40:06

+0

我不知道USER_ID的价值,我需要从一些其他表中的值,并插入到T_USER – harqs

+0

@Geoist我猜测,因为如果id 123不存在于数据库中,那么它不想被插入.. 。 –

回答

3

试试这个:

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

select 1,id指定了什么? – harqs

+0

@harqs,在你最初的查询中,你编写了'values(1,)',所以我假设你想为来自select语句的所有结果集插入id = 1,但是你可以将它改为any从结果集中选择的值而不是1. –

+0

@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; 
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 

几个条目插入正确的方式表结构基于lookup/re的值从另一个表ference会是这样:

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 

这是超越我,但是,为什么要使用可以在本数据库设计或插入方法。

+0

然而,这超出了我,为什么你会使用这个数据库设计或插入方法。我没有得到这一点请谅解 – harqs

+0

解释为什么我的例子不是好的做法的定义是远远超出了SO的范围。 – 2012-06-18 11:57:53

1

而且在这种情况下,什么是这个问题:我的意思是这个问题有点怪,如果你知道从一开始这两个值,为什么选择用在所有的麻烦

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

+0

我不知道USER_ID的价值,我需要从某些其他表中获取这个值并插入到T_USER – harqs

+0

实际上 - 对于这个查询 - 你可以。您从id = 123的用户中检索id,这意味着您始终检索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) 
     SELECT id,1 
     FROM user ; 
     WHERE id = 123