台灣最大程式設計社群網站
線上人數
738
 
會員總數:245151
討論主題:189055
歡迎您免費加入會員
討論區列表 >> 其他DB >> 資料比對問題!
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料比對問題!
價值 : 50 QP  點閱數:1816 回應數:7

樓主

力胖
初學者
212 86
1583 213
發送站內信

請問各位板友:
我有a表跟b表,我要把a表的東西塞到b表裡面,但要做比對,主key為id,如果這個id在b表沒有就新增,有的話就比對是否完全符合,完全符合就不動作,部分不同就只更新,現在是用程式一筆一筆的比,不知道有沒有語法可以直接做table比對,或有什麼想關資料可以查,請各位板友提供一下建議。
PS:使用資料庫postgresql、程式php

本篇文章發表於2011-07-19 22:48
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

bestlong
捐贈 VP 給 bestlong 檢舉此回應
這樣的需求直接用 SQL 語法處理比較快


本篇文章回覆於2011-07-25 20:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

力胖
檢舉此回應
我試看看~~~謝謝!!
本篇文章回覆於2011-07-25 21:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

力胖
檢舉此回應
看起來好像不行喔!
a table
id date1 date2
1 2 3
2 3 4
5 6 7
b table
id date1 date2
1 2 4
3 5 6
7 8 5
預計結果為
a table內容
id date1 date2
1 2 4
2 3 4
5 6 7
3 5 6
7 8 5
本篇文章回覆於2011-07-27 12:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

bestlong
捐贈 VP 給 bestlong 檢舉此回應
抱歉,我先前提到的 SQL 語法只能處理新增部分

仔細看過你的問題後才注意到還要處理更新的部分
更新的處理當然也可以用 SQL 語法處理,不過要先執行後才處理新增的部分
首先 table_a.id 與 table_b.id 都要有建立主索引或唯一索引才會快


以上 SQL 是憑記憶所寫,希望沒記錯還請實際測試過

然後再執行新增處理的部分就好了
本篇文章回覆於2011-07-29 00:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

bestlong
捐贈 VP 給 bestlong 檢舉此回應
如果還希望更新時只更新有差異的欄位就將 SQL 拆開處理





每個欄位都各自處理一次就好了
本篇文章回覆於2011-07-29 00:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

bestlong
捐贈 VP 給 bestlong 檢舉此回應
用 tb_a 新增或更新 tb_b 用下列 SQL 實際在 PostgreSQL 執行過


本篇文章回覆於2011-07-29 17:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

bestlong
捐贈 VP 給 bestlong 檢舉此回應
樓主結案了
建議分享一下您的系統在改良前與後的效率差異給大家參考喔.
本篇文章回覆於2011-08-05 12:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.