Задать вопрос
@SidMrk

Как подсчитать и вывести количество совпадений значения в строке при запросе в MySQL?

Господа, вопрос:

Есть БД со столбцами 'date', 'name' и 'phone'
Где в разных строках значение 'phone' может быть одинаковым.

Как подсчитать кол-во совпадений значений 'phone' и вывести в результатах вывода запроса в отдельном столбце (где ХХХ)?

Т.е. в результате нужно что-то типа:
01.01.2020 | Вася | +7111111 | 2
02.01.2020 | Вася | +7111111 | 2
03.01.2020 | Петя | +7111112 | 1

Вывод содержимого бд:
$sqlall = mysqli_query($link, 'SELECT * FROM `myusers` ORDER BY date ASC;');  
	while ($result = mysqli_fetch_array($sqlall)) {
	  echo '<table><tr>' .
                   "<td>{$result['date']}</td>" .
                   "<td>{$result['name']}</td>" .
	           "<td>{$result['phone']}</td>" .
		   "<td>XXX</td>" .
		   '</tr></table>';
	}


Умные люди, подскажите плиз цельным кодом, типа как в примере выше.
Заранее большое спасибо!
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Если у вас MySQL 8, то дубликаты телефонов можно найти тривиально:
select A.*
  from (SELECT `date`, `name`, phone, count() over (partition by phone) phone_count
        FROM `myusers`
) A
where A.phone_count > 1
ORDER BY date ASC

Если MySQL 5, то придется немного по сложнее:
select `date`, `name`, phone, p.phone_count
from `myusers` as mu
join (SELECT phone, count(*) phone_count
         FROM `myusers`
         group by phone) p on p.phone = mu.phone
where p.phone_count > 1
ORDER BY mu.date ASC
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
group by + count()
или
count(distinct())
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы