這是我目前的情況:比較2個MySQL表和移動新行到第二個表
我有兩個表(TB1 & TB2)是完全一樣的exept的一列。我有一個CRON,它複製遠程SQL數據庫中的所有內容,並刷新TB1上的所有內容,刪除當前行並插入新行,因此TB1是我的源表。
在TB2上,我具有與TB1相同的確切結構,但最後一行從true更改爲false,默認值爲false。請參閱下面的示例表格:
TB1 +---------------+---------------+---------------+---------------+ | id | col1 | col2 |col3 | +---------------+---------------+---------------+---------------+ | 1 | value1 | val-A |false | | 2 | value2 | val-B |false | | 3 | value1 | val-C |false | | 4 | value3 | val-D |false | | 5 | value4 | val-E |false | +---------------+---------------+---------------+---------------+ TB2 +---------------+---------------+---------------+---------------+ | id | col1 | col2 |col3 | +---------------+---------------+---------------+---------------+ | 1 | value1 | val-A |true | | 2 | value2 | val-B |false | | 3 | value1 | val-C |true | | 4 | value3 | val-D |false | +---------------+---------------+---------------+---------------+
正如您所看到的,TB1有一個額外的行ID = 5。 col1和col2的組合是唯一的,這就是我想要檢測的結果,所以任何TB1.col1和TB1.col2的新組合都應該複製到TB2,同時保留TB2.col3。
我嘗試以下,並沒有真正在我的情況下工作,因爲它只顯示了所有不同的值,而不是組合差值:
SELECT TB1.col1, TB1.col2 FROM ( SELECT TB1.col1, TB1.col2 FROM TB1 UNION ALL SELECT TB2.col1, TB2.col2 FROM TB2 ) TB1 GROUP BY TB1.col1 HAVING count(*) = 1 ORDER BY TB1.col1
我知道我錯過了嵌件,但在任何幫助這兩個或至少是選擇將非常感激。
Thanx!
謝謝非常多,這工作! –
將SQL視爲管理數據集。外部聯接允許您查看一組中的所有數據,包括具有不同組的交集,或者在這種情況下,不存在交集。一個說明的例子可以找到http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – xQbert