2013-07-08 141 views
2

我有2個名爲LIVE和BACKUP的有效表。比較2個相同的MySQL表

我想要做的是比較一個實時記錄與其等效的備份記錄,看看它們是否匹配。每次訪問個人實況記錄時都需要進行此項檢查。 即我只想比較記錄號碼59(作爲例子)而不是實時表中的所有記錄?

目前我可以通過簡單地比較LIVE記錄及其等效備份記錄逐個字段來做我想要的。

但是,我想知道是否可以做一個簡單的「比較實時記錄A與備份記錄A」。

我不需要知道它們之間有什麼區別,甚至不知道它們在哪些字段出現。我只需要知道一個簡單的是/否兩個記錄是否匹配。

這樣的事情是可能的還是我堅持比較表的字段的基礎上的字段?

非常感謝,

皮特

+0

不確定這個目的,當然一個表必須是明確的,爲什麼不只是查詢1.這似乎是一個非常奇怪的使用「備份」 – Anigel

回答

1

這是一個黑客,假設列確實都是一樣的:

select count(*) 
from ((select * 
     from live 
     where record = 'A' 
    ) union 
     (select * 
     from backup 
     where record = 'A' 
    ) 
    ) t 

這將返回 「1」,如果他們是相同的,「2 「如果存在多條記錄。如果要確保兩個值在同一個表中,則使用修改後的表格:

select count(distinct which) 
from ((select 'live' as which, l.* 
     from live . 
     where record = 'A' 
    ) union 
     (select 'backup' as which, b.* 
     from backup b 
     where record = 'A' 
    ) 
    ) t; 

另外。 。 。請注意使用union。這裏重複刪除是非常有意的。