@khodos_dmitry

Как это объединить в один запрос MySQL?

$query = "SELECT COUNT(*) as `col`, `title`, GROUP_CONCAT(`id`) as ids FROM `cpl_city` GROUP BY `title` HAVING `col` > 1";
			$result = mysqli_query($link, $query) or die('Ошибка 3: '.mysqli_error($link));
			$data2 = mysqli_fetch_all($result, MYSQLI_ASSOC);
			foreach ($data2 as $dat2) {
				$ids .= $dat2['ids'].',';
			}
			$ids = substr($ids, 0, -1);	
			$query = "SELECT * FROM `cpl_city` WHERE `id` IN ($ids)";
			$result = mysqli_query($link, $query) or die('Ошибка 4: '.mysqli_error($link));
			$data1 = mysqli_fetch_all($result, MYSQLI_ASSOC);

Не соображу, как это объединить. Интересно для общего развития. И можно ли?
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Не помню, разрешён ли group by во вложенных запросах, но если да, то вот так.
SELECT * FROM `cpl_city` WHERE `title` IN (
  select t.title from (
    SELECT COUNT(*) as `col`, `title` FROM `cpl_city` GROUP BY `title`
  ) as t where t.col > 1
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы