2016-11-29 11 views
0

Могу ли я получить записи, равные во всех полях, кроме определенных?SQL Where where: все поля равны, кроме одного

EG:

SELECT a.* 
FROM table_name a 
INNER JOIN table_name b 
    on (a.price = b.price 
    AND a.quantity = b.quantity 
    AND {all the remaining params}) 
    AND a.id <> b.id 

Мне нужно найти одинаковые элементы, за исключением его ID (дублированные записи)

+0

_все оставшиеся параметры_ Вы должны установить все остальные параметры. Вы можете использовать автоматизацию, такую ​​как функция, которая строит все параметры –

+0

С помощью операторов 'минус' или' intersect' *** возможно ***, но MySQL не поддерживает эти функции. Поэтому я должен был бы сказать: «Нет, вы не можете» – xQbert

+0

Почему ваше последнее условие не включено в предложение ON? – BeS

ответ

0

Вы можете использовать SELECT с предложением GROUP BY. Например, если у вас есть таблица с именем names, столбец name, который вы хотите проверить на наличие дубликатов. Вы можете сделать:

select name, count(*) c from names group by name having c > 1; 

Это также будет возвращать дополнительный столбец, указывающий число раз повторяющееся значение произошло в строках.

Надеюсь, это поможет.

+0

Это единственный способ, которым я могу найти дубликаты, но он должен был бы перечислить все X-поля отдельно в группе select и group by. (Примечание: вы можете использовать системные таблицы для создания всего списка столбцов, поэтому вам не нужно вручную их вводить!) – xQbert

-1

Изменить свой "И A.id <> b.id" в «ГДЕ a.id <> b.id ", и это должно сработать для вас.

+1

Перечитайте вопрос. Если в таблице 30 столбцов, он хочет сравнить 29 из них и убедиться, что 30-е не совпадают; но не перечислить все столбцы ... – xQbert

+0

xQbert - изменение последнего AND на WHERE будет выбирать записи из объединенных таблиц, где идентификаторы различны, и это то, что он искал. – SeanBartram

+0

Как мы узнаем, что все остальные поля равны, если они не все определены? Bub говорит, что «вы должны их перечислить» в комментариях, и Sly_huh указывает, что это «не удобно». *** Сделать предложение where не влияет на результаты, когда используется соединение INNER. ** – xQbert

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

  • Нет связанных вопросов^_^