是否可以将一个表中的值插入另一个表并在同一查询中更新字段值?

时间:2010-11-15 14:34:58

标签: php mysql pdo

我有两张桌子。一个表用作事务历史记录,另一个表是成员详细信息的日志。运行报表时,我希望将成员详细信息的各个部分移动到事务历史记录中,但还要更新一些原本不存在的字段记录。

是否可以选择符合特定条件的所有记录,只将匹配行的部分插入另一个表中并更新单个查询中的其他字段?

例如:

在表2中,我有会员名称,注册日期和memberid。我想将上述记录移到表1中,但也将字段(状态)更新为“已处理”。

注意:我也使用php和pdo连接到mysql数据库。

这可能在一个查询中吗?

3 个答案:

答案 0 :(得分:1)

您没有指定要更新的行是否与要插入的行相同。我假设他们是:

insert into table1
(member_name, date_registered, memberid, status)
select member_name, date_registered, memberid, 'processed'
from table2
where SomeField = MyCriteria

答案 1 :(得分:1)

经过深思熟虑后,我决定使用ircmaxell的建议并简单地运行多个查询。它最终不仅使事情变得更容易,而且允许我更容易地自定义我的排序。

正如他上面所说的那样,“不要陷入更少的陷阱总是更好”

答案 2 :(得分:0)

是:

SELECT *, "processed" INTO table2 FROM table1

您必须根据表格结构进行调整,甚至可能写出所有字段:

SELECT field1, field2, field3, "processed" INTO table2 FROM table1

值得注意的是,这假设您要写入表2 包括处理过的变量(可能我建议使用布尔值?)如果您希望其他表中的“已处理”它会变得更复杂

编辑:显然mysql不支持select into so ...

INSERT INTO table2 SELECT field1, field2, field3, "processed" FROM table1

Redfilters代码工作