返回多个数据
为什么呢?
mysql sql:
select * from t_book where id=(select round(max(id)*rand()) from t_book)
答案 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]);