php-MySQL一起使用ORDER BY和GROUP BY
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-MySQL一起使用ORDER BY和GROUP BY,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1740字,纯文字阅读大概需要3分钟。
内容图文
![php-MySQL一起使用ORDER BY和GROUP BY](/upload/InfoBanner/zyjiaocheng/886/3263f9e14e5440fbb80b142ff0281d9b.jpg)
这个问题已经在这里有了答案: > Select first row in each GROUP BY group? 14个
我有一张产品编号为ID等类别的产品的表…我正在尝试从每个item_category中提取1个项目,这是最新的(其类别中ID最高).
这是代码,它使我从6个类别中获得6个项目,但它们是最旧的(ID最小)
SELECT * from items WHERE item_category = '2' or item_category = '4' or
item_category = '12' or item_category = '13' or item_category = '14' or
item_category = '19' GROUP BY `item_category` ORDER BY `item_id` LIMIT 6
按ID排序在返回的6个项目的数组上执行,在原始表上不执行.
我该如何吸引最新的物品呢?
我认为最好的查询
select *
from items
where item_category in ("2","4","12","13","14","19")
group by item_category
order by item_category DESC
解决方法:
首先要指出的是,如果您不打算在分组中包括所有未聚合的列,则应培训自己不要使用分组依据.例:
SELECT col1,col2 FROM table GROUP BY col1 -- BAD
SELECT col1,col2 FROM table GROUP BY col1,col2 -- GOOD
SELECT col1,MAX(col2) FROM table GROUP BY col1 -- GOOD
这是因为存在一个明显的问题,即您在组中不是唯一的列中获得了一个任意且不可预测的值,而这是所有问题的根源.
话虽如此,您应该这样做:
SELECT item_category, MAX(item_id)
FROM items
WHERE item_category IN ('2','4','12','13','14','19') GROUP BY `item_category`
请注意,没有限制,因为您只能有6个组,并且by by不再执行任何操作.
如果要获取相应的项目行,可以执行以下操作:
SELECT *
FROM items
WHERE item_id IN (
SELECT MAX(item_id)
FROM items
WHERE item_category IN ('2','4','12','13','14','19')
GROUP BY item_category
);
以下可能也适用:
SELECT *
FROM items i JOIN (
SELECT i2.item_category, MAX(i2.item_id) as max_item_id
FROM items i2
WHERE i2.item_category IN ('2','4','12','13','14','19') GROUP BY
i2.`item_category`
) max_ids ON i.item_id=max_ids.max_item_id;
内容总结
以上是互联网集市为您收集整理的php-MySQL一起使用ORDER BY和GROUP BY全部内容,希望文章能够帮你解决php-MySQL一起使用ORDER BY和GROUP BY所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。