繁体   English   中英

SQL将行从一个表移动到另一个表,具有不匹配的列

[英]SQL move row from one table to another with unmatched columns

我找到了很多关于如何插入使用select然后删除的例子,

我希望将数据从一个表移动到另一个表,例如,列不匹配

table1( idlocationlatlondate_added

table2( idlocationlatlondate_addedrequested

本质上我想从table1向table2插入一行,并将$ _SESSION ['user_name']添加到请求的字段,然后从第一个表中删除原始行。

我尝试了一些不同的东西

$sql = "START TRANSACTION;
INSERT INTO bia_signs_pending (SELECT * FROM bia_signs WHERE id = ".$_GET['sign_id'].');

DELETE FROM bia_signs WHERE id = '          .$_GET['sign_id'].';
UPDATE bia_signs_pending SET requested='    .$_SESSION['user']['email'].
'WHERE id = '.$_GET['sign_id'].';
COMMIT;';

//这个因为列不匹配而中断

有什么建议么?

您可以将INSERT与列名一起使用

INSERT INTO TABLE2 (id, location, lat, lon, date_added)
SELECT id, location, lat, lon, date_added 
FROM table1 
WHERE ...

并且您可以将常量添加到INSERT

INSERT INTO TABLE2 (id, location, lat, lon, date_added, requested)
SELECT id, location, lat, lon, date_added, 'Jonny'
FROM table1
WHERE ...

只需更换插页即可

INSERT INTO bia_signs_pending (SELECT FROM bia_signs WHERE id = ".$_GET['sign_id'].');

INSERT INTO bia_signs_pending (id, location, lat, lon, date_added) VALUES (SELECT * FROM bia_signs WHERE id = '".$_GET['sign_id'].');

更改INSERT语句,添加您选择的字段列表:

INSERT INTO bia_signs_pending (id, location, lat, lon, date_added)
            SELECT * FROM bia_signs WHERE id = '{$_GET['sign_id']}';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM