首页新闻找找看学习计划

mysql中SELECT areaname FROM area WHERE areaid = ROUND(rand()*32)有时候会出现多条记录???

0
悬赏园豆:10 [已解决问题] 解决于 2019-01-31 11:22

请教下SELECT areaname FROM area WHERE areaid = ROUND(rand()*32)这句话为什么有时候会出现多条记录??
mysql版本:5.7.23-log MySQL Community Server (GPL)
表结构:
CREATE TABLE area (
areaid int(11) NOT NULL,
areaname varchar(50) DEFAULT NULL,
parentId int(11) DEFAULT NULL,
PRIMARY KEY (areaid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
数据:
INSERT INTO area VALUES (1, '北京', '4744');
INSERT INTO area VALUES (2, '上海', '4744');
INSERT INTO area VALUES (3, '天津', '4744');
INSERT INTO area VALUES (4, '重庆', '4744');
INSERT INTO area VALUES (5, '河北', '4744');
INSERT INTO area VALUES (6, '山西', '4744');
INSERT INTO area VALUES (7, '河南', '4744');
INSERT INTO area VALUES (8, '辽宁', '4744');
INSERT INTO area VALUES (9, '吉林', '4744');
INSERT INTO area VALUES (10, '黑龙江', '4744');
INSERT INTO area VALUES (11, '内蒙古', '4744');
INSERT INTO area VALUES (12, '江苏', '4744');
INSERT INTO area VALUES (13, '山东', '4744');
INSERT INTO area VALUES (14, '安徽', '4744');
INSERT INTO area VALUES (15, '浙江', '4744');
INSERT INTO area VALUES (16, '福建', '4744');
INSERT INTO area VALUES (17, '湖北', '4744');
INSERT INTO area VALUES (18, '湖南', '4744');
INSERT INTO area VALUES (19, '广东', '4744');
INSERT INTO area VALUES (20, '广西', '4744');
INSERT INTO area VALUES (21, '江西', '4744');
INSERT INTO area VALUES (22, '四川', '4744');
INSERT INTO area VALUES (23, '海南', '4744');
INSERT INTO area VALUES (24, '贵州', '4744');
INSERT INTO area VALUES (25, '云南', '4744');
INSERT INTO area VALUES (26, '西藏', '4744');
INSERT INTO area VALUES (27, '陕西', '4744');
INSERT INTO area VALUES (28, '甘肃', '4744');
INSERT INTO area VALUES (29, '青海', '4744');
INSERT INTO area VALUES (30, '宁夏', '4744');
INSERT INTO area VALUES (31, '新疆', '4744');
INSERT INTO area VALUES (32, '台湾', '4744');

不知为啥要叫麦乐碧的主页 不知为啥要叫麦乐碧 | 初学一级 | 园豆:195
提问于:2019-01-29 22:06
< >
分享
最佳答案
0

因为where条件中包含了rand(),使得mysql把它当做变量来处理。无法用常量的等值查询,如果你想实现随机取一条数据出来可以试试这样写
SELECT areaName,areaid FROM area ORDER BY RAND() LIMIT 1 如果考虑效率问题你可以看一下这篇文章
https://www.cnblogs.com/tianye8123/p/5994223.html

收获园豆:10
初学者max | 菜鸟二级 |园豆:257 | 2019-01-31 11:08

哦哦,好的,谢谢。
我最近查了下资料,应该是mysql自5.7以后的一个bug。并且mysql官方也没有修复这个bug的意思。

不知为啥要叫麦乐碧 | 园豆:195 (初学一级) | 2019-01-31 11:21
其他回答(3)
0

不知道,帮顶

流年飞雨 | 园豆:1923 (小虾三级) | 2019-01-29 22:48
0

这种问题你不该问!!!自己测试一下就知道了

笑哈哈霍霍 | 园豆:202 (菜鸟二级) | 2019-01-30 08:46

不好意思,还请大佬指点一下怎么测试?谢谢大佬了。

0

应该是mysql的一个bug。
详情参考
https://blog.csdn.net/huanghanqian/article/details/82899885

不知为啥要叫麦乐碧 | 园豆:195 (初学一级) | 2019-01-31 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册