Могу ли я сравнить разные строки в одной и той же таблице MySQL (SQL) - PullRequest
0 голосов
/ 03 июля 2019

Есть ли способ сравнить разные строки в одной и той же таблице MySQL?Я хочу посчитать, сколько пользователей изменили свои имена.

Вот примерно то, что я получил в таблице журнала MySQL ...

id   userid    name
1    1         Joe
2    1         Joe
3    1         Joe
4    2         Fiona
5    3         Mark
6    3         Marcel
7    3         Marcel
8    4         Mary
9    4         Marie

Вы видите, что имя Джо не изменилосьхотя он в журнале 3 раза.«Марк» был изменен на «Марсель», а «Мэри» был изменен на «Мари».Так что, если это была вся таблица, я хочу знать, что 2 человека изменили свои имена (из четырех).

SELECT userid, GROUP_CONCAT(name) FROM tablename GROUP BY userid ORDER BY userid  DESC

Я могу проверить вывод с помощью языка сценариев (PHP), яМне просто интересно, есть ли что-то, что я могу сделать в SQL, который был бы более аккуратным и давал бы только имена, которые были изменены.

Я не уверен, возможно ли это.Пока не нашли решения, если это дубликат, пожалуйста, дайте мне знать.Спасибо.

1 Ответ

1 голос
/ 03 июля 2019

Как насчет использования предложения HAVING?

SELECT userid
FROM tablename
GROUP BY userid
HAVING MIN(name) <> MAX(name)
ORDER BY userid DESC;

Если вы хотите имена без дубликатов:

SELECT userid, GROUP_CONCAT(DISTINCT name)
FROM tablename
GROUP BY userid
HAVING MIN(name) <> MAX(name)
ORDER BY userid DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...