mysql 多表关联一对多查询最新的一条数据 深坑等你

注意核心要点:
yii2 多表关联查询单字段去重没有生效
原因是
单表的唯一查询用:distinct
多表的唯一查询用:group by --但是注意下面的坑
参考: https://blog.csdn.net/lkforce/article/details/52598155
GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。
写的顺序:select … from… where…group by… having… order by…
执行顺序:from… where…group by…having… select … order by…

所以在order by拿到的结果里已经是分组的完的最后结果。
由from到where的结果如下的内容。

到group by时就得到了根据category_id分出来的多个小组

到了select的时候,只从上面的每个组里取第一条信息结果会如下

**(特别注意:)**即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。

另一个博客查询正确, 不过是单表查询, 我没有去验证对应的其他字段是否正确
参见 https://blog.csdn.net/zhangqun23/article/details/52904707
我想列出每个部门最高薪水的结果,sql语句如下:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT

解决
由于进度问题, 用exists解决失败, 最后解决如下
如果想找最新的数据,则需要使用group by和max。找出最新数据的id, 采用低效的 in 对查询的最新数据的id进行再次查询筛选.
参见 https://blog.csdn.net/john_hongming/article/details/42742965

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值