不同版本下mysql select id from test where id in问题

weiqi1716 2014-11-25 05:10:19
测试表
mysql> desc test;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| fields | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+

MySQL版本:5.1.41
SQL:语句: SELECT id FROM test where id in (SELECT id FROM test GROUP BY field )
这个语句得出的结果和SELECT id FROM test GROUP BY field是一样的

但是再5.6.21版本中,搜索出来的是全表的数据

这是什么原因呢??
...全文
215 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 8 楼 chengchow2001 的回复:
[quote=引用 7 楼 weiqi1716 的回复:] [quote=引用 4 楼 chengchow2001 的回复:] [quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 你看下5#的数据怎么会这样[/quote] 你field的数据呢?[/quote]
引用 8 楼 chengchow2001 的回复:
[quote=引用 7 楼 weiqi1716 的回复:] [quote=引用 4 楼 chengchow2001 的回复:] [quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 你看下5#的数据怎么会这样[/quote] 你field的数据呢?[/quote] 整个表数据ru'x mysql> select * from test; +----+---------+ | id | field | +----+---------+ | 1 | 123123 | | 2 | 653456 | | 3 | 34654 | | 4 | 46731 | | 5 | 1523545 | | 6 | 123123 | | 7 | 123123 | | 8 | 653456 | +----+---------+ 8 rows in set (0.00 sec)
引用 8 楼 chengchow2001 的回复:
[quote=引用 7 楼 weiqi1716 的回复:] [quote=引用 4 楼 chengchow2001 的回复:] [quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 你看下5#的数据怎么会这样[/quote] 你field的数据呢?[/quote] mysql> select * from test; +----+---------+ | id | field | +----+---------+ | 1 | 123123 | | 2 | 653456 | | 3 | 34654 | | 4 | 46731 | | 5 | 1523545 | | 6 | 123123 | | 7 | 123123 | | 8 | 653456 | +----+---------+ 8 rows in set (0.00 sec) 数据有这些
chengchow2001 2014-11-26
  • 打赏
  • 举报
回复
引用 7 楼 weiqi1716 的回复:
[quote=引用 4 楼 chengchow2001 的回复:] [quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 你看下5#的数据怎么会这样[/quote] 你field的数据呢?
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 4 楼 chengchow2001 的回复:
[quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 你看下5#的数据怎么会这样
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 4 楼 chengchow2001 的回复:
[quote=引用 3 楼 chengchow2001 的回复:] 如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了[/quote] 主要是2个版本查出来的数据不同
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 2 楼 zy205817 的回复:
除非是你数据有问题吧,mysql版本不可能有影响的。
我自建了一张测试表,搜索出来就是这样的! mysql> select version(); +-----------+ | version() | +-----------+ | 5.6.20 | +-----------+ 1 row in set (0.00 sec) mysql> select id from test; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | +----+ 8 rows in set (0.00 sec) mysql> select id from test group by `field`; +----+ | id | +----+ | 1 | | 5 | | 3 | | 4 | | 2 | +----+ 5 rows in set (0.00 sec) mysql> select id from test where id in(select id from test group by `field`); +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | +----+ 8 rows in set (0.01 sec) 另外一台版本5.6.21也是一样的结果; 换一台版本为5.1.73的 mysql> select version(); +-----------+ | version() | +-----------+ | 5.1.73 | +-----------+ 1 row in set (0.00 sec) mysql> select id from test; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | +----+ 8 rows in set (0.00 sec) mysql> select id from test group by `field`; +----+ | id | +----+ | 1 | | 5 | | 3 | | 4 | | 2 | +----+ 5 rows in set (0.00 sec) mysql> select id from test where id in(select id from test group by `field`); +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | +----+ 5 rows in set (0.00 sec)
chengchow2001 2014-11-26
  • 打赏
  • 举报
回复
引用 3 楼 chengchow2001 的回复:
如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
不对,细看了下,这两个查询结果是一样的,你ID是递增的,不会重复 所以,第一个查询画蛇添足了
chengchow2001 2014-11-26
  • 打赏
  • 举报
回复
如果你相对于field分组的ID数据是唯一的, 这两个查询结果是一样的,否则不一样
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 12 楼 chengchow2001 的回复:
[quote=引用 11 楼 weiqi1716 的回复:] [quote=引用 10 楼 chengchow2001 的回复:] 没有这种问题
select id from test where id in(select id from test group by `field`);
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.01 sec)
我版本 5.1.73也没这个问题 但是其他5.6.21和5.6.20都出现了这个问题 郁闷了好久[/quote] 么用过那么搞的版本,你去MYSQL官方论坛看看吧[/quote] 我同事写这样结果就和之前的一样了 select * from `test` where `id` in (select * from (select `id` from `test` group by `field`)as `ttt` );
chengchow2001 2014-11-26
  • 打赏
  • 举报
回复
引用 11 楼 weiqi1716 的回复:
[quote=引用 10 楼 chengchow2001 的回复:] 没有这种问题
select id from test where id in(select id from test group by `field`);
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.01 sec)
我版本 5.1.73也没这个问题 但是其他5.6.21和5.6.20都出现了这个问题 郁闷了好久[/quote] 么用过那么搞的版本,你去MYSQL官方论坛看看吧
weiqi1716 2014-11-26
  • 打赏
  • 举报
回复
引用 10 楼 chengchow2001 的回复:
没有这种问题
select id from test where id in(select id from test group by `field`);
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.01 sec)
我版本 5.1.73也没这个问题 但是其他5.6.21和5.6.20都出现了这个问题 郁闷了好久
chengchow2001 2014-11-26
  • 打赏
  • 举报
回复
没有这种问题
select id from test where id in(select id from test group by `field`);
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.01 sec)
码无边 2014-11-25
  • 打赏
  • 举报
回复
除非是你数据有问题吧,mysql版本不可能有影响的。
ACMAIN_CHM 2014-11-25
  • 打赏
  • 举报
回复
引用 楼主 weiqi1716 的回复:
测试表 mysql> desc test; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | fields | varchar(255) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+ MySQL版本:5.1.41 SQL:语句: SELECT id FROM test where id in (SELECT id FROM test GROUP BY field ) 这个语句得出的结果和SELECT id FROM test GROUP BY field是一样的 但是再5.6.21版本中,搜索出来的是全表的数据 这是什么原因呢??
可能性很小。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧