mysql把一行保存到另一个表_MYSQL:如何复制整个行从一个表到另一个在MySQL与第二个表有一个额外的列?...
為了完善Zed的答案,并回答你的評論:
INSERT INTO dues_storage SELECT d.*, CURRENT_DATE() FROM dues d WHERE id = 5;
見TJ Crowder的評論
最安全的方法是完全指定插入和提取的列。 (對于應用程序)沒有任何保證,這些將是您認為可能的順序。
insert into dues_storage (f1, f2, f3, cd) select f1, f2, f3, current_date() from dues where id = 5;
如果您擔心需要更改多個PHP頁面(如您在其他答案的注釋中指出的那樣),則存儲過程已經成熟。 這樣,所有的PHP頁面都可以簡單地調用存儲過程(例如)僅復制該ID,并控制實際的復制過程。 這樣,只有一個地方需要維護代碼,并且在我看來,DBMS是正確的地方。
INSERT INTO dues_storage SELECT field1, field2, ..., fieldN, CURRENT_DATE() FROM dues WHERE id = 5;
希望這將有助于某人…這是我寫的一個小小的PHP腳本,以防您需要復制某些列而不是其他列,和/或列在兩個表上的順序不同。 只要列名稱相同,這將工作。 所以如果表A有[userid,handle,something]和tableB有[userID,handle,timestamp],那么你將“selectuserID,處理NOW()作為時間戳FROM tableA”,然后得到結果,將結果作為第一個parameter passing給此函數($ z)。 $ toTable是要復制到的表的string名稱,$ link_identifier是要復制到的數據庫。 對于小數據集這是相對較快的。 沒有build議您嘗試在生產環境中一次移動超過幾千行。 我主要用它來備份會話期間用戶注銷時收集的數據,然后立即清除活動數據庫中的數據,以保持它的苗條。
function mysql_multirow_copy($z,$toTable,$link_identifier) { $fields = ""; for ($i=0;$i0) { $fields .= ","; } $fields .= mysql_field_name($z,$i); } $q = "INSERT INTO $toTable ($fields) VALUES"; $c = 0; mysql_data_seek($z,0); //critical reset in case $z has been parsed beforehand. ! while ($a = mysql_fetch_assoc($z)) { foreach ($a as $key=>$as) { $a[$key] = addslashes($as); next ($a); } if ($c>0) { $q .= ","; } $q .= "('".implode(array_values($a),"','")."')"; $c++; } $q .= ";"; $z = mysql_query($q,$link_identifier); return ($q); }
或者,您可以使用內部查詢來執行此操作。
SQL> INSERT INTO SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM );
希望這可以幫助!
只是想添加這個為我精美的小片段。
INSERT INTO your_target_table SELECT * FROM your_rescource_table WHERE id = 18;
而當我在這里給Sequel Pro一個大喊,如果你不使用它,我強烈build議下載它…使生活更容易
我試著你說的,但是我得到一個消息,說where子句有問題
這是我試過的:
INSERT INTO `seller` SELECT FROM `seller_test` WHERE `s_code`=11;
錯誤:
> #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use > near 'FROM `seller` WHERE `s_code`=11' at line 1
但是當我在SELECT關鍵字后添加*時,查詢變成這樣:
INSERT INTO `seller` SELECT ***** FROM `seller_test` WHERE `s_code`=11;
我得到一個很好的結果,所以嘗試添加*關鍵字后的SELECT
總結
以上是生活随笔為你收集整理的mysql把一行保存到另一个表_MYSQL:如何复制整个行从一个表到另一个在MySQL与第二个表有一个额外的列?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中true转换为int_在Jav
- 下一篇: java jdbc 乱码_【求助】为什么