У меня есть немного сложный запрос MySQL для меня, и я не могу понять, как его написать, не потребляя тонны памяти. (я не против, если бы это было так)
У меня есть следующая таблица:
TABLE: users(id,ip)
------------------------------------
4BF1510 | 40.145.10.99 <-- SAME IP (A)
SAME ID --> 510SD55 | 65.12.105.42
SAME ID --> 510SD55 | 45.184.15.10
201505V | 40.145.10.99 <-- SAME IP (A)
984AZ6C | 72.98.45.76
| 10.15.78.10 <-- SAME IP (B)
| 10.15.78.10 <-- SAME IP (B)
SAME ID --> B1D56SX |
SAME ID --> B1D56SX |
Мне нужен запрос, который извлекает только 1 элемент для каждого уникального идентификатора или IP-адреса. Итак:
4BF1510 | 40.145.10.99
510SD55 | 65.12.105.42
984AZ6C | 72.98.45.76
| 10.15.78.10
B1D56SX |
Самые важные вещи:
- Если несколько записей имеют одинаковый IP и один и тот же идентификатор -> они будут сгруппированы
- Если несколько записей имеют одинаковый IP-адрес, но разные идентификаторы -> они не будут сгруппированы
- Если несколько записей имеют одинаковый идентификатор, но разные IP-адреса -> они будут сгруппированы
- Если несколько записей имеют одинаковый IP-адрес, но пустые поля ID -> они будут сгруппированы
- Если несколько записей имеют одинаковый идентификатор, но пустые поля IP -> они будут сгруппированы
Это означает, что идентификатор должен иметь первый приоритет доверия, поскольку несколько пользователей могут использовать один и тот же IP-адрес.
Любой эффективный способ добиться этого?
Тонны благодарностей.