Здравствуйте, друзья, я работаю на запрос, чтобы получить список реестра, но мне нужно получить повторяющиеся записи, и сохранить только то, что есть больше, длинаMysql PHP Выберите с несколькими значениями, MAX (ДЛИНА())
Пример таблица:
ID = INT Auto increment
IDref = INT not null
UserId = INT ZeroFill
+--------+---------+--------+---------+
| ID | IDref | UserId | |
+--------+---------+--------+---------+
| 1 | 1 | 00001 | |
| 3 | 1 | 001 | |
| 4 | 1 | 002 | |
| 5 | 2 | 00001 | |
| 6 | 2 | 001 | |
| 7 | 2 | 002 | |
| 8 | 3 | 00001 | |
| 9 | 4 | 002 | |
+--------+---------+--------+---------+
запросов
SELECT ID, IDref, UserId
FROM Table
WHERE UserId = '00001' OR '002'
GROUP BY IDref
HAVING count(IDref) > 0
ORDER BY CHAR_LENGTH(UserId) DESC
LIMIT 1
Update Я адресности
+--------+---------+--------+---------+
| ID | IDref | UserId | |
+--------+---------+--------+---------+
| 4 | 1 | 002 | |
+--------+---------+--------+---------+
я обязательно этот вывод:
+--------+---------+--------+---------+
| ID | IDref | UserId | |
+--------+---------+--------+---------+
| 1 | 1 | 00001 | |
| 5 | 2 | 00001 | |
| 8 | 3 | 00001 | |
| 9 | 4 | 002 | |//count(IDref) > 0// one registry find.
+--------+---------+--------+---------+
Но не работает мой запрос. кто-то может мне помочь.
Последнее обновление с рабочим кодом Спасибо Barmar:
SELECT t1.ID, t1.IDref, t1.UserId
FROM Table1 AS t1
JOIN (SELECT IDref, MAX(LENGTH(UserId)) AS maxlength
FROM Table1
WHERE UserID IN ('00001', '002')
GROUP BY IDref) AS t2
ON t1.IDref = t2.IDref AND LENGTH(t1.UserId) = t2.maxlength
WHERE t1.UserId IN ('00001', '002')
нормально, но, возможно, вы видите, производительность этого запроса в виде таблицы с 20000 записей будет быстрее?
какие результаты/запроса вы получаете хотя ? – Kruser
все время получить UserId короткий реестр .... все 002 –
Я обновил это сообщение –