Объединение таблицы с самой собой против использования Group с помощью MySQL

#mysql

#mysql

Вопрос:

Вот упрощенная версия моей таблицы:

Он содержит столбцы employee_id column2 column3 x y , и все они NUMERIC

У меня возникли проблемы с написанием сложного запроса MySQL. Я хочу получить все значения employeeid and column3 для всех сотрудников, которые имеют то же значение, что и у column2 другого сотрудника, и имеют РАЗНЫЕ значения для x и y ПАРЫ от каждого другого сотрудника. Например, если следующие 4 строки были в таблице:

 2 100 123.456 5 7
1 234 123.456 5 7
3 100 456.789 5 10
4 100 123.456 5 7
 

Строки 2 100 123.456 5 7 и 3 100 456.789 5 10 должны быть получены, потому что они имеют разные идентификаторы сотрудников ( 2 vs 3 ), одинаковое значение для column2 ( 100 и 100 ) и разные x y пары: (Сотрудник 2 имеет x = 5 и y = 7, что отличается от x = 5 и y = 10).

Как я могу сравнить документы таблицы с другими документами внутри нее?

Ответ №1:

 SELECT e1.*
FROM employee e1
JOIN employee e2
  ON e1.employee_id <> e2.employee_id  
 AND e1.column2 = e2.column2 
 AND e1.X <> e2.X
 AND e1.Y <> e2.Y
 

Но я думаю, что ваше последнее условие должно быть

 AND (e1.X <> e2.X OR e1.Y <> e2.Y)
 

Комментарии:

1. хм, я не получаю ожидаемого ответа, но этот ответ кажется правильным для проблемы, о которой я упоминал в моем OP