在INSERT INTO ... SELECT语句

时间:2017-03-18 12:10:16

标签: php mysql

我的数据库中有两个表可以说Table1和Table2,并且我试图将Table2中特定行(字段)的值复制到Table1上的特定单行。要移动的特定行由用户输入表1中每行的特定用户ID。

表格结构:

 Table 1:        a_uid,a_FName,a_Username,a_PhoneNo,b_uid,b_FName,b_Username,b_PhoneNo......

表2结构:

Table 2: uid,FName,Username,PhoneNo.....

使用INSERT INTO .. SELECT语句,但是有多个WHERE子句但是它给了我错误

INSERT INTO table1 WHERE uid='userinput1' (b_FName,b_Username,b_PhoneNo,) SELECT  FName,Username,PhoneNo FROM table2 WHERE uid='userinput2';

但是我得到了错误

  

此类型的子句先前已被解析。 (在WHERE附近)

2 个答案:

答案 0 :(得分:1)

如果app/Http/Kernel.php.中的行已存在,则需要table1语句而不是UPDATE .. JOIN

INSERT .. SELECT

如果您不知道UPDATE table1 t1 JOIN table2 t2 ON t2.uid='userinput2' SET t1.b_FName = t2.FName, t1.b_Username = t2.Username, t1.b_PhoneNo = t2.PhoneNo WHERE t1.uid='userinput1' 中的行是否已存在,您可以使用table1声明:

INSERT .. SELECT .. ON DUPLICATE KEY UPDATE

请注意,INSERT INTO table1 (uid, b_FName, b_Username, b_PhoneNo) SELECT 'userinput1', FName, Username, PhoneNo FROM table2 WHERE uid = 'userinput2' ON DUPLICATE KEY UPDATE SET b_FName = VALUES(FName), b_Username = VALUES(Username), b_PhoneNo = VALUES(PhoneNo) 可能是主键,或者至少在两个表中都是唯一的。

答案 1 :(得分:0)

对于sql-server,它将是这样的:

INSERT INTO table1 (uid,FName,Username,PhoneNo) 
SELECT @userinput1, FName,Username,PhoneNo 
FROM table2 
WHERE table2.uid=@userinput2;