2012-06-18 186 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