doublench21
@doublench21

Можно ли это сделать в один запрос?

Есть таблица такого типа:
id1 | id2 | dist
799 | 846 | 284.971
846 |799 |284.971
732 | 465 | 269.441
465 | 732 | 269.441
602 | 732 | 268.122
...

Можно ли добиться следующего в один запрос ?
1. Взять все записи, где dist < 200;
2. Найти из id1 наиболее часто встречающийся id и оставить все записи, где этот id встречается по обоим полям.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Ramallah
Если я верно все понял, то как вариант:

SELECT * FROM 
	test,
	(SELECT id1, COUNT(id1) cnt FROM
		(SELECT * FROM test WHERE dist<200) s1
	 GROUP BY id1 
	 ORDER BY cnt DESC 
	 LIMIT 1) cnt2
WHERE test.id1=cnt2.id1
OR test.id2=cnt2.id1
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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