我正在尝试使用下面的代码创建表的副本。如果他们都有相同的列,那么一切都很好。我的 table1 有 2 列(id、用户名),而 table2 有 3 列(id、用户名、日期)。我的目标是创建 table1 WHERE table1
.id = $id 的副本并在其中插入date
on 。有人可以指导我吗?
INSERT table2 SELECT * FROM table1 WHERE table1
.id = $id
看看"INSERT INTO"
,我怀疑你正在寻找这样的东西?
INSERT INTO table2 (id, username)
SELECT id,username FROM table1
在我看来,您正在寻找仅在 id 匹配的情况下将表 2 的日期左连接到表 1...首先运行此查询,您应该会看到它为您选择了适当的结果集:
SELECT table1.*, table2.date
FROM table1
LEFT JOIN table2
ON table1.id = table2.id
然后您可以根据需要导出或插入该结果集作为 table1 的新副本
例子
Table1 is ID,Name,DateAdded
Table2 is Name,ID,DateOriginallyAdded,SomeOtherColumn
查询会说
Insert Table2(Name,ID,DateOriginallyAdded) Select Name,ID,DateAdded From Table1 Where ...
指定两组列,你可以逃脱
Insert Table2 Select Name,ID,DateAdded,Null From Table1 Where ...
或者
Insert Table2(ID,Name,DateOriginallyAdded) Select * From Table1 Where ...
但它可能会导致一些讨厌的错误。