2013-03-29 86 views
1

我有兩個表具有相同的內容,一個是第一個表的舊副本。所以現場表可能會有價格變化。我試圖建立一個查詢來查找舊記錄中的價格變化。MySQL - 兩個表,比較兩行

Products

ID

Title

Price

舊錶

Old_Products

ID

Title

Price

即時通訊使用此查詢,但迄今爲止並沒有做我想做

SELECT products.id 
FROM products 
LEFT JOIN products_old ON products.id = products_old.id 
WHERE products.price IS NULL 

回答

2

設計您的where子句以確定舊錶和新表之間的價格不相等。

SELECT products.id, products.title, products.price, products_old.price 
FROM products 
JOIN products_old ON products.id = products_old.id 
WHERE products.price <> products_old.price 

如果這個簡單的查詢不佳在數據庫上執行我會建議檢查您已經在兩個表應用的索引。另外,正如ypercube所提到的,使用簡單的內連接將比使用外連接更有效。

+0

謝謝,我已經試過這個凱文 - 我們的數據庫有超過一百萬條記錄,它需要年齡爲這個查詢工作。有什麼建議麼? – okett

+0

@okett我不知道如何優化一個簡單的連接,這個查詢是非常基本的。你有索引建立在ID和價格列? –

+2

爲什麼'LEFT JOIN'? –