2015-10-05 2 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 | 

Itemid могут дублировать, но 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 = средний предмет is = средний itemserial

Этот запрос будет использовать по PHP приложение, чтобы показать на столе

Любое предложение или помощь будет оценена :)

+0

Я не понимаю вопроса. Работает ли ваш запрос? Если нет, что с этим не так? Какие данные вы хотите? Вы просто ищете определенный серийный номер в любом из 40 столбцов? Что такое 'it0' и' is0'? Связаны ли они друг с другом? –

+0

привет, что мне нужно, в моем php-скрипте есть текст ввода для поиска серийного номера, например, пример 123456, и мне нужно искать серийный номер (is0, is1, is2, .... is39) где 'is0 ... is39 'соответствует 123456. FYI it0 mean itemID index 0, is0 средний индекс товаров 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

Привет, спасибо, что ответили на этот вопрос! я просто смущен, вы имеете в виду FROM person_name (на самом деле мое имя таблицы - это инвентарь), JOIN person_name? , person_name не является таблицей, которая является именем столбца. вы можете снова прочитать мой вопрос? , может быть, вы пропустите :), спасибо –

+0

проверьте обновленный ответ. Извините, я пропустил это :) – urfusion

+0

запрос работает, но он принимает как навсегда :(, моя таблица имеет строку 80k, можете ли вы дать мне какое-либо предложение для оптимизации? и как я могу проверить серийный номер на весь столбец? Items itemserial on таблица инвентаризации имеет 39 столбцов на строку, :( –

Смежные вопросы