我已经找到了很多关于如何插入使用select然后删除的例子,
我希望将数据从一个表移动到另一个表,并且列不匹配 例如
table1(id
,location
,lat
,lon
,date_added
)
table2(id
,location
,lat
,lon
,date_added
,requested
)
基本上我想从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;';
//这个因为列不匹配而中断
有什么建议吗?
答案 0 :(得分:1)
您可以将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 ...
答案 1 :(得分:1)
只需更改插入
即可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'].');
答案 2 :(得分:0)
更改您的INSERT语句,添加您选择的字段列表:
INSERT INTO bia_signs_pending (id, location, lat, lon, date_added)
SELECT * FROM bia_signs WHERE id = '{$_GET['sign_id']}';