我正在使用以下查询来获取随机行
'SELECT * FROM TABLENAME1 ORDER BY RAND() LIMIT 1
'。这个查询将返回随机行。但是我需要获取放在另一个表中的名称。所以我必须使用连接查询。
'SELECT tablename1.*,tablename2.name FROM tablename1 INNER JOIN tablename2 ON tablename1.id = tablename2.id ORDER BY RAND(tablename1.id)
'
以上查询每次返回相同的行,我没有得到随机行。请帮我解决这个问题。
答案 0 :(得分:1)
RAND(tablename1.id)
使用tablename1.id
作为伪随机数生成器的种子,因此每次都会给出相同的结果。尝试在第二个查询中使用RAND()
。
答案 1 :(得分:1)
出于某种原因,您正在使用tablename1.id
播种查询的第二个版本。
使用相同的种子值调用RAND()会返回相同的结果。