2014-09-28 2 views
0

У меня есть, по-видимому простой запрос:выберите RAND() из подзапросов

SELECT tag_id 
from books_tags 
WHERE tag_id IN (SELECT tag_id 
       FROM books_tags 
       GROUP BY tag_id 
       ORDER BY COUNT(tag_id) DESC 
       LIMIT 100) 
ORDER BY RAND() 
LIMIT 1 

Я желаю, чтобы выбрать одну случайную запись из запроса внутри. Это не работает, ошибка говорит о том, что LIMIT и ORDER не могут появляться в подзапросе.

Я не хочу создавать временную таблицу или случайным образом на стороне сервера. Любые идеи о том, как объединить его в чуткий запрос?

ответ

0

Вы должны быть в состоянии сделать то же самое с INNER JOIN/LEFT OUTER JOIN

SELECT a.tag_id 
from books_tags a 
INNER JOIN (SELECT tag_id 
       FROM books_tags 
       GROUP BY tag_id 
       ORDER BY COUNT(tag_id) DESC 
       LIMIT 100) b ON a.tag_id = b.tag_id 
ORDER BY RAND() 
LIMIT 1 
Смежные вопросы