一次現場mysql重覆記錄資料的排查處理實戰記錄

2022-09-21 10:00:09 字數 918 閱讀 8142

目錄

我當時正好出差在客戶現場部署除錯軟體,有一天客戶突然找到我這裡,說他們現場生產的資料出現了異常的情況,最直接的表現就是 同乙個標籤,出現在了多個物料上,需要我配合,看怎麼排查問題

客戶當時直接一摞重複標籤的盒子碼在我面前,我慌得一匹,這怕不是捅婁子了

稍加思索,現在需要做的就是,在資料庫中查詢出重複的標籤,即對乙個標籤進行統計, 1 的即可

emmm,語法錯誤,我記得還有個h**ing 來著,換上試試

好傢伙,重複的標籤有 1500 多條,再統計一下總共問題的記錄數量,以及再分組看看標籤重複次數的佔比資料

對了,先把這些重複標籤資料扔個客戶去追溯產品(幸好 n**icat 支援複製資料)

以上一條查詢記錄的結果為臨時表,在此基礎上,用 sum() 求和

重複的記錄有點多,這問題有一點點大了

對之hhokhvlsky前的查詢錶換乙個查詢方式,即對 count 資料再次分組

從結果來看,絕大部分問題資料重複了2次

where是乙個 約束宣告,程式設計客棧在查詢資料庫的結果返回之前對資料庫中的查詢條件進行約束,即在結果返回之前起作用,且where後面 不能使用聚合函式

h**ing是乙個 過濾宣告,所謂過濾是 在查詢資料庫的結果返回之後進行www.cppcns.com過濾,即在結果返回之後起作用,並且h**ing後面可以使用聚合函式。

所謂 聚合函式,是對一組值進行計算並且返回單一值的函式:sum---求和,count---計數,max---最大值,**g---平均值等。

在 mysql 的查詢操作中,我們日常用到的,一般都是多表聯查,將查詢的結果當成中間表進行多次查詢,對查詢的結果做分組,做統計彙總等操作

如果查詢操作中使用了函式計算或者是分組,典型的特徵就是將原始表的多條記錄合併成一條,就需要 h**ing 對這些操作的結果進行過濾,除此之外,使用 where 對錶記錄進行條件過濾即可

mysql 重覆記錄

不希望資料表中有重覆記錄的時候我們可以給表新增乙個聯合唯一索引 例如,user表中有user id,user name兩個字段,如果不希望有兩條一摸一樣的的user id和user name,我們可以給user表新增兩個欄位的聯合唯一索引 alter table user add unique in...

MySQL不插入重覆記錄

想插入一條記錄,如果有則不插入,無則插入。表示由乙個自增長id主鍵和其他幾個記錄 t version id,package name,first,second,third,forth 原先想用insert ignore into,但是發現沒有用,因為它把id也看做不同。於是我找了網上的另外一種方法 ...

Mysql的統計重覆記錄

雖說sql語法,這些主流的資料庫引擎都支援,但是每乙個資料庫引擎都有自己的特性,例如統計並顯示非重複的資料。mysql的實現形式是 資料庫test id name 1 agle 2 blibli 3 cat 4 cat 5 blibli 比如我想用一條語句查詢得到name不重複的所有資料,那就必須使...