mysql sql奇怪的问题?

时间:2017-05-10 08:55:01

标签: mysql sql

返回多个数据

为什么呢?

mysql sql:

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

4 个答案:

答案 0 :(得分:0)

根据@Tarek的建议,您可能有重复的ID值。要找出可以运行此查询的内容:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

问题不在于您的ID列的唯一性。

select round(max(id)*rand()) from t_book

这将返回各种数量的id,至少在mysql 5.6中。我不知道为什么,但这真的很奇怪。

您可以尝试这样做,从表格中选择随机记录:

select * from t_book order by rand() limit 1;  

如果你坚持使用这种round-max-random方法,请记住,round也可以返回0,并且你不太可能有0 id。

首先我认为这是由重复的id值引起的。你可以尝试这个小提琴,看看会发生什么:http://sqlfiddle.com/#!9/7fc510/1。 对于多次运行,我得到了0,1或2个结果记录。

答案 3 :(得分:0)

您有语法错误,
Round函数采用以下形式:

ROUND(N,[d]);