您好我有这样的查询:
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
Run Code Online (Sandbox Code Playgroud)
它应该每次随机显示20家酒店,但相反,我最终每次都得到同样的20家酒店.长话短说RAND()似乎不起作用,我似乎无法找到任何逻辑错误.
编辑:问题解决了.Mysql看不到内部RAND()所以这是正确的方法:
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
Run Code Online (Sandbox Code Playgroud)
您的ORDER BY和LIMIT条款应该在一起:
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
Run Code Online (Sandbox Code Playgroud)
ORDER BY在子查询中没有LIMIT子句没有任何意义,因为排序不一定保留在外部查询的结果中.