2012-12-02 44 views
0

需要MySQL專家的幫助。我有一個可怕的數據庫工作,我試圖修復這個結構,但這個讓我感到困惑。該表最初有一個ID,名稱和4個銷售欄。我將它轉換爲一個id,name和single sell列,基本上是一個數據透視表。這很好,下一個問題是擺脫重複,因爲不是每個條目都有4個銷售條目。當某些應該有空字段時,在空值字段中查找MySQL中的重複部分

所以第一次手術後我結束了這樣的事情:

id  name  sellid 
1  bob  111 
1  bob  
1  bob  
2  mary  112 
2  mary  113 
2  mary  114 
2  mary  115 
3  fred 
3  fred 
3  fred 
3  fred 

這樣做組由我設法得到它的地步,它看起來像這樣:

id  name  sellid 
1  bob  111 
1  bob  
2  mary  112 
2  mary  113 
2  mary  114 
2  mary  115 
3  fred 

現在,這裏是我撞牆的地方。弗雷德很好,他應該有一個入口,但沒有sellid,瑪麗也很好,她有全部的4個sellids。鮑勃是問題。如何在不影響Fred的情況下爲他刪除空的sellid?

我會說我所嘗試的,但我只是在這裏完全喪失,所以我還沒有嘗試過任何東西。

+0

而一個星期的問題隨機downvote的原因是? –

回答

1

您正在尋找您的姓名和其他數據之間的outer join

SELECT * FROM 
    (SELECT DISTINCT id, name FROM my_table) t1 NATURAL LEFT JOIN 
    (SELECT * FROM my_table WHERE sellid IS NOT NULL) t2 

看到它的sqlfiddle

不過說真的,你應該normalise您的架構還讓你有(personid, name)表和(personid, sellid)對(從中基本上執行上述外需取得必要的記錄,包括NULL■當加入爲&)表。

+0

完美,一開始並沒有工作,因爲它顯然不是空的,我必須做'>''而不是空。我正處在更好的規範化過程中,但數據需要每隔一段時間從外部源自動更新一次,這意味着要改變這些例程以適應新的數據結構。所以是的,你是對的,但緩慢但肯定。非常感謝! –

相關問題