mysql RAND()限制 [英] mysql RAND() LIMIT

查看:65
本文介绍了mysql RAND()限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我有这样的查询:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆