返回多个数据mysql sql奇怪的问题?
为什么?
MySQL的SQL:
select * from t_book where id=(select round(max(id)*rand()) from t_book)
返回多个数据mysql sql奇怪的问题?
为什么?
MySQL的SQL:
select * from t_book where id=(select round(max(id)*rand()) from t_book)
正如所建议的,你可能有重复的ID值@Tarek。要找出你可以运行此查询:
SELECT id, COUNT(*) c FROM t_book GROUP BY id HAVING c > 1;
在假设“ID”是一个唯一的主键值,它不应该返回多个值。在返回值中,所有“id”字段是否匹配,还是返回多个不同的ID?
问题不在于您的id列的唯一性。
select round(max(id)*rand()) from t_book
这将返回不同数量的ids,至少在MySQL 5.6中。我不知道为什么,但这真的很奇怪。
你可以试试这个,从您的表中选择一个随机记录:
select * from t_book order by rand() limit 1;
如果你坚持这一轮-MAX随机方法,记住这一轮可以返回0也是一样,这是不可能的你有一个0 ID。
首先我以为这是由重复的id值造成的。你可以试试这个小提琴,看看会发生什么:http://sqlfiddle.com/#!9/7fc510/1。 对于多次运行,我获得了0,1或2个结果记录。
你有一个语法错误,
函数round采取以下形式:
ROUND(N,[d]);
id不是唯一的 – Tarek
对简短点和困惑。你想解释一下你试图获得样本数据吗? –