我有两张桌子。一个表用作事务历史记录,另一个表是成员详细信息的日志。运行报告时,我希望将成员详细信息的片段移动到事务历史记录中,但也要更新一些原本不存在的字段记录。
是否可以选择满足特定条件的所有记录,只将匹配行的一部分插入到另一个表中,并在单个查询中更新其他字段?
例如:
在表2中,我有成员名称、注册日期和成员i。我想将上面的记录移到表1中,但也要将字段(status)更新为“已处理”。
注意:我还使用php和pdo连接到mysql数据库。
在一个查询中这是可能的吗?
发布于 2010-11-15 23:53:25
经过深思熟虑后,我决定使用ircmaxell的建议,简单地运行多个查询。它不仅让事情变得更简单,而且让我可以更容易地定制我的排序。
正如他上面所说的,“不要陷入越少越好的陷阱”
发布于 2010-11-15 22:36:56
您没有指定要更新的行是否与要插入的行相同。我假设他们是:
insert into table1
(member_name, date_registered, memberid, status)
select member_name, date_registered, memberid, 'processed'
from table2
where SomeField = MyCriteria发布于 2010-11-15 22:39:20
是:
SELECT *, "processed" INTO table2 FROM table1您将不得不根据表结构进行调整,甚至可能写出所有字段:
SELECT field1, field2, field3, "processed" INTO table2 FROM table1值得注意的是,这里假设您希望写入表2,包括已处理的变量(我可以建议使用布尔值吗?)如果你想把"Processed“放在另一个表中,它会变得更复杂。
编辑:显然不支持select into所以...
INSERT INTO table2 SELECT field1, field2, field3, "processed" FROM table1Redfilter代码工作正常
https://stackoverflow.com/questions/4185327
复制相似问题