У меня есть таблица, в которой мне нужен оператор MYSQL Select, поэтому я могу найти поврежденные данные и вручную исправить их.
Пример таблицы
TABLE_A id | тип | value1 | значение2 1 | 10 | 123 | +987 2 | 10 | 123 | +987 3 | 10 | 123 | +789 4 | 20 | 123 | +987 5 | 20 | 456 | +987 6 | 30 | 123 | ноль 7 | 30 | 123 | ноль 8 | 40 | 123 | +987
Мне нужен оператор select, который будет перечислять записи, если они имеют один и тот же тип, а value1 – не то же самое и / или значение2 не то же самое.
Например
ID 1,2,3 – будет отображаться, потому что значение 2 отличается в id 3, и они имеют один и тот же тип,
ID 4,5 будет отображаться, потому что значение1 отличается, и они имеют одинаковый «тип»,
ID 6,7 НЕ будет отображаться, потому что value1 и value2 одинаковы для одного и того же типа,
ID 8 НЕ будет отображаться, потому что есть только один с этим типом.
Я пытаюсь обдумать это в течение нескольких дней и нуждаюсь в некоторой помощи. благодаря
SELECT a.id as problem_id FROM TABLE_A as a JOIN TABLE_A as b ON a.type = b.type WHERE a.value1 <> b.value1 OR a.value2 <> b.value2 GROUP BY problem_id;
Попробуйте:
SELECT * FROM TABLE_A WHERE type IN (SELECT type FROM TABLE_A GROUP BY `type`, `value1`, `value2` HAVING count(value1) > 1 OR count(value2) > 1)