2012-10-25 92 views
0

我有兩個表(cd目錄可以說)在我的SQL數據庫。我想從一張表(每晚重新創建)中放入記錄到我的主表中。我只想將數量大於0的項目放入主表中。但是,夜間表中的某些項目將具有與主表格中相同的UPC條形碼字段。如果已經在主表中的數量大於0,我不想將它們放入。否則,我希望數量大於0的所有條目從夜間到主表。如何從SQL中的字段中刪除重複值?

我根本無法圍繞如何做到這一點。當然,我已經設置了它,以便數量大於0的所有數據都被複制到主表中,但這意味着我可以爲已經在主表中的同一項目重複列表(基於UPC的重複項)。

任何人都知道我該怎麼做?我的查詢,因爲它代表:

INSERT INTO main (id, title, artist, qty, barcode) 
SELECT nightly.PID, 
     nightly.Title, 
     nightly.Artist, 
     nightly.QtyAvail, 
     nightly.UPC 
FROM nightly 
WHERE nightly.QtyAvail > 0; 
+0

只是讓你們不覺得被遺棄,我在執行查詢的建議,並讓你知道如何去(大約需要一個半小時:() – user1026801

+0

實際上現在我很難搞清楚如何測試這個... – user1026801

回答

2
insert into main (id, title, artist, qty, barcode) 
select 
    n.PID, n.Title, n.Artist, n.QtyAvail, n.UPC 
from nightly as n 
where 
    n.QtyAvail > 0 and 
    n.UPC not in (select T.barcode from main as T where T.qty > 0) 
+1

看起來不錯,但是你需要子查詢中的where T.qty> 0' – Barmar

+0

好吧,錯過了那個問題,它應該工作,因爲所有從'nightly'插入'main'的項目已經擁有'qty> 0',但如果有'daily'表和'qty <0'表插入表中的項目,它將不起作用,因此更改了答案。 –

+0

它似乎會對我有用,但不幸的是它最終鎖定了兩個表,我必須進入並殺死任何進程並重新啓動mysqld等。 – user1026801