2016-04-25 17 views
0

我想用這些語句克隆一個表到另一個:克隆表包括多個PK

INSERT clone_table1 
SELECT alias.* FROM table1 alias 
INNER JOIN table2 b 
on alias.pidm = b.user 
WHERE alias.pidm LIKE "2016%" 
AND b.userstate = 30; 

是它的工作很好,直到有上table1多個alias.pidm

表1:

id | pidm | field1 | field2 
--------------------------- 
1 | 5 | aa | bb 
2 | 5 | cc | dd 
3 | 5 | ee | ff 

表2:

user | field1 | userstate 
------------------------- 
5 | kk | 30 
6 | jj | 40 

這樣,唯一的字段我可以識別彼此是table1.pidmtable2.user之間。

所以問題是:如何插入所有where table1.pidm=5 and table2.userstate=30行到clone_table1

在此先感謝。

+0

它不清楚,什麼工作?預期的結果是什麼? – Mihai

+0

我正在執行的sql查詢只是從table1克隆一行。我想克隆table1中的所有值,其中pidm是5,而他們的userstate在table2上是30。 –

回答

0

我已經解決了與查詢的問題如下:

INSERT clone_table1 
SELECT alias.* FROM table1 alias 
INNER JOIN table2 b 
on alias.pidm = b.user 
WHERE alias.pidm LIKE "2016%" 
AND b.userstate= 30; 

感謝。

1
INSERT clone_table1 
SELECT alias.* FROM table1 alias 
LEFT JOIN table2 b 
on alias.pidm = b.user AND b.userstate = 30 
WHERE alias.pidm LIKE "2016%" 
+0

對不起,但是這個將table1中的所有值插入clone_table1 –

+1

@blankBird_在您的問題中顯示預期結果。 – Mihai

1

INSERT clone_table SELECT * FROM table1 WHERE table1.pidm=5 AND table2.userstate = (SELECT * FROM table2 WHERE table2.userstate=30) 不知道這是否會工作,但你可以嘗試使用子查詢。自從我碰到sql以來,已經太久了。這裏是link這可能有助於