为什么在MYSQL查询中出现多行?教程
我试图通过使用主键\_id和以下查询从表(用户)中检索随机行.
SELECT *
FROM user
WHERE _id IN (SELECT Floor(1 + ( Rand() * ( Count(_id) - 1 ) ))
FROM user);
没有从表中删除任何行,但是我(不一致)得到多行返回…
我觉得这很了不起,因为子查询的任何结果都肯定会返回一个整数,该整数针对主键…..应该总是只有1条记录!
我想使用一个查询,我可能会使其成为一条准备好的语句,并且由于我无法使用@variables来选择随机行,所以我不使用LIMIT子句.
我的MySQL欢迎声明告诉我我的版本如下:
服务器版本:5.5.29-0ubuntu0.12.04.2(Ubuntu)
解决方法:
如何使用ORDER BY RAND()LIMIT 1;在您的查询中而不是\_id IN位置(从用户中选择FLOOR(1(RAND()*(COUNT(\_id)-1))));
您得到多行原因(从用户中选择FLOOR(1(RAND()*(COUNT(\_id)-1))))将为您返回一个不同的值,以供记录在“用户”表中.那是因为RAND位.
自行从用户运行select FLOOR(1(RAND()*(COUNT(\_id)-1))),您将看到.