2015-10-05 32 views
1

我想問一下在有很多列的mysql表上有重複值檢測。 我的表名是庫存有PERSON_NAME,40列的itemid,和40列序號 喜歡這個項目: PERSON_NAME, itemid0,itemid1,itemid2 ...... itemid39 和序列號 itemserial0, itemserial1,itemserial2 .... itemserial39Mysql在很多列中檢測到重複的值

所以我想..找到 例子:我有一個像 '888239390707418232' 序列號 查找每一列888239390707418238 itemserial itemserial0,itemserial1 ... itemserial39

如果這個值在itemserial23上找到因此查詢會使輸出

person_name | itemid23 | itemserial23  | 
John  | 1234  | 888239390707418232 | 
Bryan  | 1234  | 888239390707418232 | 

條目標識能夠複製,但itemserial不能

Table Structure (if you confused about my table): 
person_name, it0, is0, it1, is1, it2, is2, it3, is3 ..... until it39, is39 

我只是試圖揭示這一查詢結果:

SELECT person_name, 
it0, is0, it1, is1, it2, is2, it3, is3, 
it4, is4, 
it5, is5, 
it6, is6, 
it7, is7, 
it8, is8, 
it9, is9, 
it10, is10, 
it11, is11, 
it12, is12, 
it13, is13, 
it14, is14, 
it15, is15, 
it16, is16, 
it17, is17, 
it18, is18, 
it19, is19, 
it20, is20, 
it21, is21, 
it22, is22, 
it23, is23, 
it24, is24, 
it25, is25, 
it26, is26, 
it27, is27, 
it28, is28, 
it29, is29, 
it30, is30, 
it31, is31, 
it32, is32, 
it33, is33, 
it34, is34, 
it35, is35, 
it36, is36, 
it37, is37, 
it38, is38, 
it39, is39 
FROM gdb0101.inventory 
WHERE is1 = '888239390707418232' OR is2 = '888239390707418232' 
OR is3= '888239390707418232' 
OR is4= '888239390707418232' 
OR is5= '888239390707418232' 
OR is6= '888239390707418232' 
OR is7= '888239390707418232' 
OR is8= '888239390707418232' 
OR is9= '888239390707418232' 
OR is10= '888239390707418232' 
OR is11= '888239390707418232' 
OR is12= '888239390707418232' 
OR is13= '888239390707418232' 
OR is14= '888239390707418232' 
OR is15= '888239390707418232' 
OR is16= '888239390707418232' 
OR is17= '888239390707418232' 
OR is18= '888239390707418232' 
OR is19= '888239390707418232' 
OR is20= '888239390707418232' 
OR is21= '888239390707418232' 
OR is22= '888239390707418232' 
OR is23= '888239390707418232' 
OR is24= '888239390707418232' 
OR is25= '888239390707418232' 
OR is26= '888239390707418232' 
OR is27= '888239390707418232' 
OR is28= '888239390707418232' 
OR is29= '888239390707418232' 
OR is30= '888239390707418232' 
OR is31= '888239390707418232' 
OR is32= '888239390707418232' 
OR is33= '888239390707418232' 
OR is34= '888239390707418232' 
OR is35= '888239390707418232' 
OR is36= '888239390707418232' 
OR is37= '888239390707418232' 
OR is38= '888239390707418232' 
OR is39= '888239390707418232' 

但結果很混亂 it = mean itemid is = mean itemserial

這個查詢將是PHP應用程序使用,以顯示在表

任何建議或幫助將不勝感激:)

+0

我不明白這個問題。您的查詢是否有效?如果沒有,它有什麼問題?你想要什麼數據?你只是在40列中的任何一列尋找特定的序列號?什麼是'it0'和'is0'?它們是相互關聯的嗎? –

+0

你好,我需要的是,在我的PHP腳本有輸入文本搜索項目序列像例如123456,我需要搜索項目序列(is0,is1,is2,.... is39)'is0 ... is39'與123456匹配。FYI it0表示itemID索引0,is0表示itemserial索引0. –

回答

1

試試這個

SELECT distinct inventory.* 
    FROM inventory as tb1 
    join inventory as tb2 
WHERE tb1.itemid23 = tb2.itemid23 
    and tb1.id < tb2.id 

它可以幫助你獲取非重複記錄

刪除重複記錄

DELETE inventory 
    FROM inventory as tb1 
    join inventory as tb2 
WHERE tb1.itemid23 = tb2.itemid23 
    and tb1.id < tb2.id 
+0

嗨感謝您回答這個問題!我只是困惑,你的意思是從person_name(實際上我的表名是庫存),JOIN person_name? ,person_name不是一個表,它是列名。你能再次讀我的問題嗎? ,也許你想念:),謝謝 –

+0

檢查更新的答案。對不起,我錯過了:) – urfusion

+0

查詢工作,但它需要永遠:(:(我的表有80k行,你可以給我任何優化的建議? 以及如何我可以檢查整列的序列號?column itemserial on表格清單有39列每行,:(: –