2011-01-08 30 views
0

我試圖通過添加一個新字段來修復一些數據。MySQL如何加入並從一張表中選擇可見記錄?

我有幾個月前的備份,我已經將這個數據庫恢復到我的服務器。

我正在查看名爲pads的表,其主鍵是PadID,重要的字段名爲RemoveMeDate。在恢復的(較舊的)數據庫中,實際日期設置在RemoveMeDate中的記錄較少。我的控制日期是2001-01-01 00:00:00,這意味着記錄不會隱藏(又名可見)。

我需要做的是從控制日期的舊數據庫/表中選擇所有記錄,並加入那些未設置控制日期的新數據庫/表中。

我希望我解釋正確。

我會再試一次,帶數字。我在舊錶中設置了80,000個可見記錄(設置了控制日期)和30,000個新的數據庫/表中。我需要從舊數據庫中選擇50,000個,以執行更新查詢。

繼承人我的查詢,我不能按我的意願去工作。 jules-fix-reasons是舊數據庫,jules是新的數據庫。

select p.padid 
from `jules-fix-reasons`.`pads` p 
JOIN `jules`.`pads` ON p.padid = `jules`.`pads`.`PadID` 
where p.RemoveMeDate <> '2001-01-01 00:00:00' AND 
`jules`.`pads`.RemoveMeDate =  '2001-01-01 00:00:00' 

編輯 - 也許我可以提供一個例子,而不是10,000條記錄我會展示1個例子。

p.pads (old table) 
PadID=1 RemoveMeDate=2010-12-01 09:00:00 
PadID=2 RemoveMeDate=2001-01-01 00:00:00 
PadID=3 RemoveMeDate=2001-01-01 00:00:00 
PadID=4 RemoveMeDate=2001-01-01 00:00:00 
PadID=5 RemoveMeDate=2001-01-01 00:00:00 
PadID=6 RemoveMeDate=2001-01-01 00:00:00 
PadID=7 RemoveMeDate=2001-01-01 00:00:00 
PadID=8 RemoveMeDate=2001-01-01 00:00:00 
PadID=9 RemoveMeDate=2001-01-01 00:00:00 
PadID=10 RemoveMeDate=2009-01-05 00:10:00 

因此,theres 8(aks =一個80,000在真實表中)記錄可見。

Jules.pads 
PadID=1 RemoveMeDate=2010-12-01 09:00:00 
PadID=2 RemoveMeDate=2010-12-01 08:00:00 
PadID=3 RemoveMeDate=2010-12-01 07:00:00 
PadID=4 RemoveMeDate=2010-12-01 06:00:00 
PadID=5 RemoveMeDate=2001-01-01 00:00:00 
PadID=6 RemoveMeDate=2001-01-01 00:00:00 
PadID=7 RemoveMeDate=2001-01-01 00:00:00 
PadID=8 RemoveMeDate=2001-01-01 00:00:00 
PadID=9 RemoveMeDate=2001-01-01 00:00:00 
PadID=10 RemoveMeDate=2009-01-05 00:10:00 

因此,Theres 5(aks = a 50,000在真實表中)記錄可見。

所以SQL查詢我想會從表P返回記錄2,3,4

編輯ajreal - 工作查詢(FYI)

SELECT old_table.padid 
FROM `jules-fix-reasons`.`pads` AS old_table 
JOIN `jules`.`pads` AS new_table ON old_table.padid = new_table.`PadID` 
WHERE new_table.RemoveMeDate <> '2001-01-01 00:00:00' 
AND old_table.RemoveMeDate = '2001-01-01 00:00:00' 
+0

當您運行此您能得到什麼? – 2011-01-08 15:09:21

+0

我沒有得到任何結果。 – Jules 2011-01-08 15:19:21

回答

1

我需要做的是選擇所有來自較舊的數據庫/表的記錄與控制日期的記錄加入那些來自較新的db/table的控制日期未設定的記錄

你只需要翻轉的條件

select old_table.padId, new_table.padId 
from `jules-fix-reasons`.`pads` as old_table 
JOIN `jules`.`pads` as new_table 
ON old_table.padid = `jules`.`pads`.`PadID` 
where new_table.RemoveMeDate<>'2001-01-01 00:00:00' AND 
old_table.RemoveMeDate='2001-01-01 00:00:00' 

PS:是時間來學習如何爲你的表的別名給個好名字

相關問題