mysql RAND()限制 [英] mysql RAND() LIMIT
问题描述
你好,我有这样的查询:
Hello I have a query like this:
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE YAZILIM_menu_icerik.menu_id = 39
AND otel_id IN (
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE menu_id =$id
ORDER BY RAND()
)
LIMIT 0,20
它每次工作时应该随机显示20家酒店,但是相反,我最终每次都会获得相同的20家酒店.长话短说RAND()
似乎无效,我似乎也找不到任何逻辑错误.
It should display randomly 20 hotels each time it works but instead , i'm ending up getting the same 20 hotel each time. Long story short RAND()
doesn't seem to work and I can't seem to find any logical error.
问题已解决. Mysql没有看到内部RAND(),因此这是正确的方法:
Problem solved. Mysql doesn't see inner RAND() so here's the correct way to do it:
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE YAZILIM_menu_icerik.menu_id = 39
AND otel_id IN (
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE menu_id =$id
)
ORDER BY RAND()
LIMIT 0,20
推荐答案
您的ORDER BY和LIMIT子句应该在一起:
Your ORDER BY and LIMIT clauses should be together:
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE YAZILIM_menu_icerik.menu_id = 39
AND otel_id IN
(
SELECT otel_id
FROM YAZILIM_menu_icerik
WHERE menu_id = $id
)
ORDER BY RAND()
LIMIT 20
在没有LIMIT
子句的子查询中没有裸露的ORDER BY
是没有意义的,因为该顺序不一定保留在外部查询的结果中.
It makes no sense to have a bare ORDER BY
in a subquery with no LIMIT
clause because the ordering is not necessarily preserved in the results of the outer query.
这篇关于mysql RAND()限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!