日常记录之SQL DISTINCT 关键字

有如下表表结构,stu 学生表,有班级名称和学生名称

stu表

stu_classstu_name
1班张三
2班李四
2班王五
3班赵六

如上表,我们要查询班级的名称
select stu_class from stu;

查询结果如下图,2班出现了两次,我们想要的结果是查看都有哪几个班级,重复的只出现一次即可。

stu_class
1班
2班
2班
3班

select distinct stu_class from stu;

查询结果如下图,是我们想要的结果。

stu_class
1班
2班
3班

总结:distinct 的作用为去重,如果我们想要查询的字段希望相等内容的只出现一次就够了,那么就需要用到distinct 关键字了。

写到这里,突然想到它既然是去重了,那么我如果查询的结果包括学生姓名的话,出现的是谁的姓名呢,是排在前面的还是后面的, 直接试试不就行了。

select DISTINCT stu_class, stu_name from stu;

结果如下:这是所有结果都查出来了,班级也并没有去重,难道去重失效了吗, 百度一下,查询到如果这么写它是根据stu_class + stu_name 一块儿来去重的,所以结果就全部重新出来了。 看着sql 想,那么我把stu_name 放到distinct 关键字前面呢,会不会就可以了,再试一次

stu_classstu_name
1班张三
2班李四
2班王五
3班赵六

select stu_name, DISTINCT stu_class from stu;

结果sql 报错,MySQL 并不支持这样的写法,结果就是distinct 只能写在最前面。

再次总结:distinct 关键字,只能写在最前面,且如果查询多个字段,是根据多个字段来判断是否重复的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值