2016-04-12 2 views
1

My SQL заявление выглядит следующим образом:Ошибка: 1146. Таблица «college_small.result» не существует при использовании временных таблиц SQL

SELECT course_id FROM (
(SELECT COUNT(course_id) AS count FROM takes GROUP BY course_id) AS result) 
WHERE count IN (SELECT MAX(count) FROM result) 

Как можно использовать временные таблицы дважды Например, таблица «результат» здесь.

ответ

0

Если вы просто хотите получить course_id, который имеет максимальное количество единиц, то вы можете заказать подзапрос по счету и ограничить набор результатов на одну запись.

SELECT course_id, COUNT(course_id) AS count 
FROM takes 
GROUP BY course_id 
ORDER BY COUNT(course_id) DESC 
LIMIT 1 

Если вы хотите, чтобы получить все значения конечно идентификаторов, в том случае, если будет ничья для максимального количества дублей, то вы можете попробовать следующие несколько более сложный запрос:

SELECT result.course_id 
FROM 
(
    SELECT course_id, COUNT(course_id) AS count 
    FROM takes 
    GROUP BY course_id 
) AS result 
WHERE result.count = (
    SELECT COUNT(*) 
    FROM takes 
    GROUP BY course_id 
    ORDER BY COUNT(*) DESC 
    LIMIT 1 
) 
+0

Это действительно работает. Это может помочь мне решить вопрос. Но я все еще хочу спросить об использовании временных таблиц дважды. Может быть, это не так на практике. – dapao

+0

. Один из распространенных способов повторного использования временной таблицы - это конструкция, называемая _common table expression_ (CTE). SQL Server, Oracle и Postgres поддерживают эту функцию, но, увы, MySQL ее не поддерживает. Возможно, вы сможете повторно использовать временную таблицу в MySQL, используя представления или динамический SQL. –