我的数据库中有两个表可以说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附近)
答案 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;