2017-05-10 94 views
-1

返回多个数据mysql sql奇怪的问题?

为什么?

MySQL的SQL:

select * from t_book where id=(select round(max(id)*rand()) from t_book) 
+3

id不是唯一的 – Tarek

+1

对简短点和困惑。你想解释一下你试图获得样本数据吗? –

回答

0

正如所建议的,你可能有重复的ID值@Tarek。要找出你可以运行此查询:

SELECT id, COUNT(*) c FROM t_book GROUP BY id HAVING c > 1; 
0

在假设“ID”是一个唯一的主键值,它不应该返回多个值。在返回值中,所有“id”字段是否匹配,还是返回多个不同的ID?

0

问题不在于您的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个结果记录。

0

你有一个语法错误,
函数round采取以下形式:

ROUND(N,[d]);