select min(name) from tableselect * from table where id in (select min(id) from table group by name)那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 22:52:35
select min(name) from tableselect * from table where id in (select min(id) from table group by name)那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?

select min(name) from tableselect * from table where id in (select min(id) from table group by name)那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?
select min(name) from table
select * from table where id in (select min(id) from table group by name)
那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?

select min(name) from tableselect * from table where id in (select min(id) from table group by name)那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?
这个sql的意思是:查询出同名中ID最小的记录信息
分析方法:
这个是一个嵌套查询的sql语句,一般都需要从最低层的sql来判断条件,而最外层的sql则是告诉你:查询什么.
比如:上面的sql中,最外层的sql为:select * from table
这样,结果为:查询table表中的记录数,返回的数据结构为table的表结构对应的数据.
而低层的sql为:select min(id) from table group by name
意思是:查询出同名中的id最小的值,举例:
ID name desc
1 name1 name1 id = 1的描述
2 name1 name1 id = 2的描述
3 name2 name2 id = 3的描述
子查询的结果为:1,3
最终的结果为:
ID name desc
1 name1 name1 id = 1的描述
3 name2 name2 id = 3的描述
问题补充:那这样的话我是不是可以理解为他可以 完成 DISTINCT一样的效果呢?
--〉回答:DISTINCT的意思是不一样的,使用DISTINCT的话,根据查询的列进行排重,比如说,你只查询一列:name,那么,查询的结果中就是:
name
name1
name2
但是,如果你查询的是ID,name,使用了DISTINCT的话,则结果为:
ID name
1 name1
2 name1
3 name2
不知楼主理解了没有.
(这种补充的问题在这里头进行回答真是不方便啊,如果有什么不理解的可以单独给我留言)