簡體   English   中英

是否可以將一個表中的值插入另一個表並在同一查詢中更新字段值?

[英]Is it possible to insert values from one table into another AND update field values in same query?

我有兩張桌子。 一個表用作事務歷史記錄,另一個表是成員詳細信息的日志。 運行報表時,我希望將成員詳細信息的各個部分移動到事務歷史記錄中,但還要更新一些原本不存在的字段記錄。

是否可以選擇滿足特定條件的所有記錄,僅將匹配行的片段插入另一個表中並更新單個查詢中的其他字段?

例如:

在表2中,我有成員名稱,注冊日期和memberid。 我想將上述記錄移到表1中,但也將字段(狀態)更新為“已處理”。

注意:我也使用php和pdo連接到mysql數據庫。

這可能在一個查詢中嗎?

您沒有指定要更新的行是否與要插入的行相同。 我假設他們是:

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

經過深思熟慮后,我決定使用ircmaxell的建議並簡單地運行多個查詢。 它最終不僅使事情變得更容易,而且允許我更容易地自定義我的排序。

正如他上面所說的那樣,“不要陷入更少的陷阱總是更好”

是:

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代碼有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM