在MySQL中的表之間計算差異(從某種意義上應該添加或刪除一個表以獲得另一個表)的好方法是什麼?如何計算MySQL中的表之間的差異?
2
A
回答
1
你也可以使用一個左外連接(第一告訴你在哪裏在表中存在行,否B,第二反之亦然):
SELECT a.id FROM a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL
SELECT b.id FROM b LEFT JOIN a ON b.id = a.id WHERE a.id IS NULL
1
SELECT DISTINCT id FROM a WHERE NOT EXISTS (SELECT * FROM b WHERE a.id = b.id);
SELECT DISTINCT id FROM b WHERE NOT EXISTS (SELECT * FROM a WHERE a.id = b.id);
7
無論答案公佈到目前爲止(來自BrynJ和Vadim)做了非常徹底的工作。做徹底的工作也非常困難。兩個答案都假設知道每個表中存在哪些ID號就足夠了。但是,一般來說,表格有多個列。
讓我們把表A和B.
的一個重要問題是「兩代表具有相同的架構」?如果沒有,那麼一個問題是哪些列需要被添加到A,哪些列需要被添加到B以使他們的模式相同。這是一個元數據查詢,可以從系統目錄中得到答覆。添加到表中的列應插入哪些值是一個有趣的問題。
我們假設這些表實際上具有相同的模式,包括相同的主鍵和列之間相同的功能依賴關係。我們還假設有一個ID列(存儲唯一的整數),Name列(一個字符串)和一個DATE類型的RefDate列。
Table A Table B
ID Name RefDate ID Name RefDate
1 Frederick 2007-01-23 1 Josephine 2009-01-10
現在,需要從每個表中插入,刪除,更新以使它們相同?
我認爲可以公平地說,如果不知道更多的上下文,就沒有單一的答案。這可能是弗雷德裏克自2007年以來經歷了性別改變手術,而B中的入門代表了她的新身份。或者它可能是一個錯誤;數據庫不應該同時存儲這些記錄。或者可能有另一個解決方案。
不幸的是,來自BrynJ和Vadim的詢問都表明A和B之間沒有區別,這對我來說是一個可疑的命題。
順便提一句,請注意,比較行可能有空位時的行比它們沒有時更復雜。例如,考慮比較名稱:
沒有空值:
(A.Name = B.Name)
用null:
(A.Name = B.Name OR (A.Name IS NULL AND B.Name IS NULL))
一個理由迴避空值時,您可以。
相關問題
- 1. 如何計算列表中的數字之間的差異?
- 2. Mysql:如何計算兩個avg之間的差異?
- 3. 如何計算日期間隔中兩行之間的差異?
- 4. 如何計算PERL中2個時間戳之間的差異
- 5. 計算兩次python之間的差異
- 6. 計算圖像之間的差異
- 7. 計算日期之間的差異 - Postgres
- 8. 計算小時之間的差異
- 9. 計算不同列和行之間的時間差異[MYSQL]
- 10. 計算MySQL中兩個日期條目之間的差異
- 11. 如何計算來自mysql中同一行的值之間的差異
- 12. 如何odoo計算時間之間的差異
- 13. JScript:如何計算兩個日期時間之間的差異?
- 14. 如何計算ms中兩個DateTime之間的差異?
- 15. 如何計算R中日期之間的差異
- 16. 如何計算Objective-C中兩個日期之間的差異?
- 17. 如何計算python中各組數字之間的差異?
- 18. 如何計算Javascript中兩個字符串之間的差異?
- 19. Mysql - 計算兩個不同表中的兩列之間的差異並插入
- 20. 如何計算兩個日期之間的時間差? - MySql
- 21. 如何計算兩個日期之間的時間差 - MySql
- 22. 如何計算直方圖的連續行之間的差異?
- 23. 行之間的Mysql差異
- 24. 計算兩張表之間的差距
- 25. 如何計算兩次之間的差異
- 26. 如何計算屬性和百分位數之間的差異?
- 27. 如何使用Node.js計算兩個日期之間的差異?
- 28. 如何計算兩個Java java.sql.Timestamps之間的差異?
- 29. 如何計算二進制字段之間的差異?
- 30. 如何計算兩個日期之間的差異?