Привет.Как поступить если подзапрос возвращает несколько колонок. Знаю вариант через создание временных таблиц,но хочется услышать другое решение.Припустим
$sql1="SELECT * FROM имя WHERE `колонка_1` IN ((SELECT COUNT(*) AS `so`,`колонка_1` FROM `имя` GROUP BY `колонка_1` ORDER BY `so` DESC ))";
есть специальный оператор?Хочу с подзапроса вытащит только колонку колонка_1?
Можно запустить подзапрос еще раз, уже без условий:
$sql1="SELECT * FROM имя WHERE `колонка_1` IN (select `колонка_1` from (SELECT COUNT(*) AS `so`,`колонка_1` FROM `имя` GROUP BY `колонка_1` OR.....
Отработает он достаточно быстро.
Через оператор "EXISTS" будет что-то вроде:
$sql1="SELECT * FROM таблица1 WHERE EXISTS ((SELECT COUNT(*) AS `so`,`колонка_1` FROM таблица2 WHERE таблица2.`колонка_1` = таблица1.`колонка_1` GROUP BY `колонка_1` ORDER BY `so` DESC ))";
Если я правильно понял замысел, то короче будет так:
$sql1="SELECT * FROM имя NATURAL JOIN (SELECT колонка_1 FROM имя GROUP BY колонка_1 ORDER BY COUNT(*) DESC LIMIT 1) X";
Сборка персонального компьютера от Artline: умный выбор для современных пользователей