本文最后更新于:2021年12月13日 下午
环境
MySQL服务端: 8.0
客户端: Datagrip 2020.3
问题
使用id作为条件查询时可以查询到多条记录
重现步骤
1、创建t_user
表作为实验环境
1 2 3 4 5
| create table t_user ( id varchar(255) primary key, name varchar(255) );
|
2、插入多条数据
1 2 3
| INSERT INTO t_user (id, name) VALUES ('11058352198752523183739676841462', '马里奥'); INSERT INTO t_user (id, name) VALUES ('11058352198752523183739676841463', '路易吉'); INSERT INTO t_user (id, name) VALUES ('11058352198752523183739676841464', '奇诺比可');
|
3、查询结果
1
| select * from t_user where id = 11058352198752523183739676841463;
|
结果如下:
此时,我们可以看到查询结果是存在3条的。
正常情况下,按ID匹配数据只会存在一条数据。
4、再次验证
那么我们再来插入3条数据
1 2 3
| INSERT INTO test_db.t_user (id, name) VALUES ('AFL0O4RBS85A5D3TRM24R0ORIMMI71', '奔奔'); INSERT INTO test_db.t_user (id, name) VALUES ('AFL0O4RBS85A5D3TRM24R0ORIMMI72', '板栗'); INSERT INTO test_db.t_user (id, name) VALUES ('AFL0O4RBS85A5D3TRM24R0ORIMMI73', '奇诺比奥');
|
再次执行查询操作
1
| select * from t_user where id = 'AFL0O4RBS85A5D3TRM24R0ORIMMI72';
|
结果如下:
5、结论
重复的操作,得到不同的结果,可以很明显的两次查询的结果是由于id
组成不同的缘故造成
解决方案
修改sql为:
1
| select * from t_user where id = '11058352198752523183739676841463';
|
加引号让mysql
认为这是字符串,不再按照数字处理。