[求救]有關於資料重覆的問題

edited 十月 2013 in 資料庫
在同一個資料表中的資料發生重覆,如果使用PHP 和 mySQL的話,請問有什麼方法可以解決??

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1896

評論

  • edited 七月 2006
    能夠詳述你所謂資料重複指的是什麼狀況嗎?
  • edited 七月 2006
    我的table為
    欄位 型態
    exe_empl_num char(10)
    exe_pro_num char(20)
    exe_y year(4)
    exe_m int(11)
    exe_d int(11)
    exe_ch_num char(2)
    exe_hour float
    exe_pay float
    沒有設PRIMARY KEY,所以會有資料重覆的問題。
    我現在想到的解決方法是:
    用PHP的程式來判斷資料是否重覆,不過沒有寫成功。
  • edited 七月 2006
    可以設定複合主鍵試試看,不過有些限制,詳情請到 MySQL 的線上文件庫去翻翻資料

    另外,建議你同一個問題不要一文多發比較好...
  • edited 七月 2006
    為什麼不設個主鍵,這樣就方便多了
    如果要用php來判斷
    那可以在新增一筆資料前,先去撈資料庫看有沒有重覆,即可
    ex
    $var=新資料;
    $result = mysql_query("select * from tablename where 某欄位=".$var);
    if($result ) echo "資料表內資料有和準備新增的資料重覆";

    大概是這樣
  • edited 七月 2006
    我個人也是建議使用PK,不過既然 free_man 不設定 PK ,個人認為必有他的理由,所以我才建議他設定複合鍵的方式,讓 MySQL 在寫資料進去時會自動檢查,而不依賴 PHP...
  • edited 七月 2006
    不設PK是因為exe_empl_num ,exe_pro_num 的值會重覆,所以沒辦法設。
    我會試看看把exe_empl_num,exe_pro_num,exe_y,exe_m,exe_d
    設成複合鍵。
    可是我的資料庫所存的資料,已經有exe_empl_num,exe_pro_num,exe_y,exe_m,exe_d 一樣的記錄重覆存在,造成我在取值運算的不方便,所以才會想用PHP程式來處理,將重覆的值去掉。
    在此謝謝各位給我的意見,也為一文多發的事在此說聲抱歉。
  • edited 七月 2006
    不太明白你的需要,select distinct ...... 對你有幫助嗎?
  • edited 七月 2006
    http://www.flag.com.tw/book/5105.asp?bokno=F8216

    建議你看一下這本書,裡面會有你要的答案
  • edited 十一月 2007
    MySQL 資料表重覆資料處理
    http://www.real-blog.com/programming/184

    在 MySQL 裡面想要避免 primary key 以外的資料重覆,可以在資料表裡面定義 UNIQUE 的欄位,例如:

    create table members(
    first_name char(20) not null,
    last_name char(20) not null,
    email char(50) not null,
    unique (first_name, last_name)
    );

    在以上建立 members 資料表的 SQL 語句中,最後一行用 unique 定義了 first_name 及 last_name 的資料不可以重覆,如果欄位已經存在相同的資料,MySQL 會輸出類似這句的錯誤訊息:

    "ERROR 1062 at line 1: Duplicate entry ‘xxx-yyy’ for key 1"

    有些情況要強制性地新增重覆資料,可以在 insert 加插 IGNORE,用法如下:

    insert ignore into members values(’Sam’, ‘Tang’, ‘[email protected]’);


    這貼可能已經很久了,我也發生這問題,用google找到這貼,希望有幫助。
Sign In or Register to comment.