<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 企業 > > 正文

              mysql錯誤1064怎么修改?mysql數據庫如何處理重復數據?

              來源:科技時報網 時間:2023-06-02 11:18:34

              mysql錯誤1064怎么修改?

              01

              首先我們在mysql數據庫中準備一個數據表,并且往數據表中插入數據

              02

              然后我們編寫如下圖所示的查詢語句并且執行,你就會發現執行結果報出了1064錯誤

              03

              回到查詢語句中我們發現Select單詞拼寫錯誤了SQL語句的語法錯誤都會導致1064錯誤的出現

              04

              最后解決這個錯誤就很簡單了,我們只需要把SQL語句寫正確即可

              mysql數據庫如何處理重復數據?

              方法一:防止出現重復數據

              也就是說我們再設計表的時候,就應該對這些數據設置一個UNIQUE 索引,在插入的時候就可以保證其唯一性,也就不存在有重復的數據了。當然你也可以直接設置為PRIMARY KEY(主鍵)。效果也是一樣的。我們看一個案例:下表中無索引及主鍵,所以該表允許出現多條重復記錄。

              CREATE TABLE student

              (

              first_name CHAR(20),

              last_name CHAR(20),

              sex CHAR(10)

              );

              目前first_name,last_name是可以重復的,如果不想重復這里有兩個解決辦法:

              1、設置雙主鍵模式

              CREATE TABLE student

              (

              first_name CHAR(20) NOT NULL,

              last_name CHAR(20) NOT NULL,

              sex CHAR(10),

              PRIMARY KEY (last_name, first_name)

              );

              現在就無法插入重復數據了。

              2、添加unique索引

              CREATE TABLE student

              (

              first_name CHAR(20) NOT NULL,

              last_name CHAR(20) NOT NULL,

              sex CHAR(10)

              UNIQUE (last_name, first_name)

              );

              這兩種看起來形式好像有一點區別,但是能起到相同的作用。此時我們可以插入兩條重復的數據,會發現報錯。

              當然我們還可以在數據庫中去驗證一下:

              SELECT COUNT(*) as repetitions, last_name, first_name

              FROM student

              GROUP BY last_name, first_name

              HAVING repetitions > 1;

              在這里我們統計的是 first_name 和 last_name的重復記錄數,上面已經用兩種方法設置了,這里肯定就是0了。

              方法二:在插入時指定能否插入重復數據

              在這里我們使用的是Insert ignore into 與Insert into指令。

              (1)Insert ignore into會忽略數據庫中已經存在的數據,如果數據庫沒有數據,就插入新的數據,如果有數據的話就跳過這條數據。這樣就可以保留數據庫中已經存在數據,達到在間隙中插入數據的目的。

              (2)Insert into則直接相反,會直接插入數據,不管數據庫里面是否含有重復數據。

              我們還是舉例說明:

              insert ignore into student (last_name, first_name) values ( '張三', '李四');

              //結果

              Query OK, 1 rows affected (0.00 sec)

              insert ignore into student (last_name, first_name) values ( '張三', '李四');

              //結果

              Query OK, 0 rows affected (0.00 sec)

              現在我們看出來了吧,也就是說在執行第一條插入操作的時候,看到數據庫沒有,則直接插入一條新紀錄,因此一行記錄受到影響,但是在第二次插入的時候,數據庫已經有一條一樣的了,因此便不會插入了,0行受到影響。 當然了還有一個指令也可以完成類似于insert ignore into相似的功能,那就是replace into。他表示的是如果存在primary 或 unique相同的記錄,則先刪除掉。再插入新記錄。

              方法三:過濾重復數據

              如果你需要讀取不重復的數據可以在 SELECT 語句中使用 DISTINCT 關鍵字來過濾重復數據。

              SELECT DISTINCT last_name, first_name

              FROM student

              ORDER BY last_name;

              你也可以使用 GROUP BY 來讀取數據表中不重復的數據:

              SELECT last_name, first_name

              FROM student

              GROUP BY (last_name, first_name);

              方法四:刪除重復數據

              這種情況其實就相當于,在水的終點處去解決。看下面sql語句:

              //根據student創建一個臨時表,并使用group by過濾了重復數據

              CREATE TABLE tmp SELECT last_name, first_name, sex

              FROM student;

              GROUP BY (last_name, first_name);

              //刪除原student表

              DROP TABLE student;

              //給這個臨時表重新命名

              ALTER TABLE tmp RENAME TO stu;

              當然你也可以在數據表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重復記錄。方法如下:

              ALTER IGNORE TABLE student

              ADD PRIMARY KEY (last_name, first_name);

              OK,解決辦法這么多,相信能解決你的問題。

              責任編輯:

              標簽: mysql錯誤1064怎么修改 mysql數據庫如

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩