SQL揭秘:你所不知道的‘Group By 1,2‘真相

在我探索MySQL数据库的神秘世界时,我偶然遇到了一个让我困惑的写法:group by 1, 2。这样一条SQL语句跳进了我的视野:

select id, user_name from tb_user group by 1, 2 order by 1, 2

对于group by 1, 2和order by 1, 2的含义,我初时是一头雾水。但经过一番探索和资料搜寻,我终于明白了,原来1、2代表的是选择的列的顺序,也就是第一列和第二列。

这样的话,上述的SQL实际上就等同于:

select id, user_name from tb_user group by id, user_name order by id, user_name

这里有个小插曲,那就是这种索引是从1开始计数的,而不是0。这个知识点不仅适用于group by,order by也是同样的规则。

这让我想起了一句老话:“纸上得来终觉浅,绝知此事要躬行。”这句话深刻地反映了学习的真谛,不是吗?实践出真知,这是无可争议的真理。

所以,我建议大家有空时也动手试试,亲自实践一下,看看这些神奇的SQL命令。

进一步地,让我们深入探讨group by和having的妙用。

group by这个命令,顾名思义,就是用来分组的。你只需要在by后面指定你想要根据哪个字段来分组即可。但记住,group by是和聚合函数如家常便饭般一起使用的,这样你才能进行计数(count)、求和(sum)、求平均值(avg)等操作。

接下来是having的登场时间了,having可以说是条件筛选的高手,它的筛选对象是group by的结果。比如,如果你想进一步探究每个设备访问页面路径超过100次的情况,having就能派上用场了。

select distinctId, count(distinctId) from table_name group by distinctId having count(distinctId) > 100

在这个学习旅程中,我意识到,书本知识虽然重要,但将知识应用到实践中去才是学习的真正高效方式。

总结一下,group by 1,2意味着按照选定的列(属性)进行分组,数字1和2分别代表第一列和第二列。而having的用法则是在分组后对结果进行条件筛选。

通过用自己的话重述这些概念,我希望能以一种更轻松幽默的方式,让大家理解并记住这些有趣而重要的SQL知识。毕竟,学习是一场旅行,而不仅仅是目的地。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值