2012-05-28 129 views
-1

我如何獲得最終表?我想合併,以便如果它比較並且記錄中有一個空列,它會用後面的值填充它。該規則是應該的storetype爲每個用戶mysql合併表中的重複記錄

enter image description here

回答

0

它看起來像你被usernamestoretype分組。嘗試運行此:

select min(id), username, min(filename), min(date), min(desc), storetype, 
    min(password), min(email), min(ftp) 
from table1 
group by username, storetype 

注意,當然,這將在的情況下工作,你真正擁有的數據,你在你的屏幕截圖顯示,即每每每usernamestoretype對只有1個非空值列但是id列。在這種情況下,id列,它看起來像你選擇最小值,所以查詢也會導致這一點。

+0

謝謝。現在就在這裏工作。我如何將結果放在另一個表格(最終)? – karto

+0

@karto關於如何做到這一點的信息有很多問題,例如[這一個](http://stackoverflow.com/questions/1304750/insert-subquery-in-select-query) –

+0

得到這個開心。 :-)現在看到查詢很好地顯示。現在我將看看如何在新表 – karto

0

這可能是我做過的最骯髒的代碼只出現一次:)...和我甚至不會推薦它,如果你有超過幾百條記錄要處理。讓我知道,因爲我無法在IDE上檢查它。

<?php 

    $query = 'SELECT * FROM TABLE 1'; 
    $result = mysql_query($query); 
    if ($result){ 
     while ($result=mysql_fetch_array($result)){ 
     $data[] = $row; 
    } 
    } 

    // 

    if (isset($data)){ 
    $x=0; 
    $y=0; 
    $missingColumn = array(); 

    while ($x < count($data)){ 
     foreach ($data[$x] as $key=>$value){ 
      if (empty($value)){ 
       $missingColumn[$y][] = $key; 
      } else { 
       $output[$y][] = $value; 
      } 
     } 
     if ($missingColumn[$y]){ 
      $rowComplete = FALSE; 
      $yetToBeCompleted = count($missingColumn[$y]); 
      while (!$rowComplete && $x<count($data)){ 
       $x++; 
       foreach ($missingColumn as $value){ 
       if ($data[$x][$value] <> ''){ 
        $output[$y][$value] = $data[$x][$value]; 
        $yetToBeCompleted--; 
       } 
       } 
       if (0 == $yetToBeCompleted){ 
       $y++; 
       break; 
       //$rowComplete = TRUE; 
       } 
      } 
      $y++;   

     } else { 
      $y++; 
      $x++; 
     } 
    } 
    } 


?> 
+0

可能合併並刪除重複記錄 – karto

+0

謝謝。我能得到一個表'最終'創建和填充如圖所示嗎? – karto

+0

如果您的意思是刪除具有空值的列,則不應將其稱爲「合併」。上面的查詢怎麼樣? –

0

也許我不是那種多功能的mysql,但沒有任何困難的數據變更技術,我不認爲這是可能的。

  • 編輯尤其是因爲在某些coloums你把遇到的最值,並用該值替換「合併」細胞
+0

合併並刪除重複記錄 – karto

+0

您一直在說,但您如何計劃合併它們。你有什麼規矩?在我看來,你總是有一個sterotype?也許以某種方式想出如何按名稱和商店類型進行分組,並從這一點抓住列。 –

+0

規則是storetype只能出現一次 – karto