Подзапрос возращает несколько колонок

168
15 декабря 2016, 15:56

Привет.Как поступить если подзапрос возвращает несколько колонок. Знаю вариант через создание временных таблиц,но хочется услышать другое решение.Припустим

$sql1="SELECT * FROM имя WHERE `колонка_1` IN ((SELECT COUNT(*) AS `so`,`колонка_1` FROM `имя` GROUP BY `колонка_1` ORDER BY `so` DESC ))";

есть специальный оператор?Хочу с подзапроса вытащит только колонку колонка_1?

Answer 1

Можно запустить подзапрос еще раз, уже без условий:

$sql1="SELECT * FROM имя WHERE `колонка_1` IN (select `колонка_1` from (SELECT COUNT(*) AS `so`,`колонка_1` FROM `имя` GROUP BY `колонка_1` OR.....

Отработает он достаточно быстро.

Answer 2

Через оператор "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 ))";
Answer 3
  1. Не вполне понятно, каково назначение этого запроса без предложения LIMIT в подзапросе.
  2. Если я правильно понял замысел, то короче будет так:

    $sql1="SELECT * FROM имя NATURAL JOIN (SELECT колонка_1 FROM имя GROUP BY колонка_1 ORDER BY COUNT(*) DESC LIMIT 1) X";

READ ALSO
Как убрать collation SQL?

Как убрать collation SQL?

Как в PHPMYADMIN убрать из поля varchar/text столбик collation, потому что когда он есть, у меня добавляются нулевые значения в строке

183
Вывести несколько значений SQL в PHP

Вывести несколько значений SQL в PHP

Как одним запросом SQL вывести несколько значений из строк, одного столбца, то есть допустим есть таблица users, в ней idКак вывести все id, используя...

136
Do while не передает значение в новый for

Do while не передает значение в новый for

И как сделать правильно?

141
Ошибка You have an error in your SQL syntax

Ошибка You have an error in your SQL syntax

Здесь была огромная простыня кода и скриншот, которые не имеют никакого отношения к SQL-ошибкеИз-за этого собственно ошибки были не видны

152