About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

MySQL 將查詢結果存入資料表

FUNction 於 2008年1月24日 晚上10:43 發表
資料從資料庫查詢出來後,我們想將查詢結果存入新的表格,我以前都會用兩個SQL 語法,再搭配程式的邏輯,例如我們想從訂單中取出每一本書最後是什麼時候被訂的,然後將資料放在另一個資料表中,我會先用SELECT 語法:
SELECT book_id, MAX(time) FROM orders GROUP BY book_id;

然後將結果存在變數,用迴圈執行很多次以下SQL 語法(有幾本書執行幾次):
INSERT INTO orderlist (book_id, last_time) VALUES (查出來的書ID, 查出來的時間);

但是其實有更帥的方法,只要一行語法
如果我們要將查出來的資料直接插入資料表中(達到上述效果),我們其實可以用以下語法:
INSERT INTO orderlist (book_id, last_time) SELECT book_id, MAX(time) FROM orders GROUP BY book_id;

或者我們想要將查詢結果直接開新資料表儲存:
CREATE TABLE orderlist SELECT book_id, MAX(time) FROM orders GROUP BY book_id;

這樣一來:
  • 減少執行{資料列數}次的SQL 語法(只要執行一次)
  • 減少程式記憶體的存取量
  • 減少程式碼並消除無用的邏輯
真是一舉數得 :-) Tags: , ,

讀者回應 ( 0 意見 )

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^