加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql – 指定从GROUP BY子句返回的记录

发布时间:2020-12-11 23:43:06 所属栏目:MySql教程 来源:网络整理
导读:编辑澄清 我可能误解了GROUP BY的使用,所以我只是重新解释我的问题而不假设如何解决问题: 我有一个term_ids列表和一个包含对象的表(在其他字段中有一个object_id PK和term_id作为FK),我需要为每个提供的term_id提取具有最高object_id的对象.这样做的正确方

编辑澄清

我可能误解了GROUP BY的使用,所以我只是重新解释我的问题而不假设如何解决问题:

我有一个term_ids列表和一个包含对象的表(在其他字段中有一个object_id PK和term_id作为FK),我需要为每个提供的term_id提取具有最高object_id的对象.这样做的正确方法是什么?

原始问题

我确定我遗漏了一些显而易见的东西,但我无法弄清楚如何指定一个带有GROUP BY的查询将返回哪条记录.默认情况下,GROUP BY返回组中的第一条记录,我可以在不使用子查询的情况下获取最后一条记录吗?

基本查询返回第一条记录:

SELECT *
    FROM wp_term_relationships
    WHERE term_taxonomy_id IN (20,21,22)
    GROUP BY term_taxonomy_id

这是有效的,但有一个子查询

SELECT * 
    FROM (
        SELECT * 
        FROM wp_term_relationships
        WHERE term_taxonomy_id IN (20,22)
        ORDER BY object_id DESC
    ) wtt
    GROUP BY term_taxonomy_id

这是语法错误

SELECT * 
    FROM wp_term_relationships
    WHERE term_taxonomy_id IN (20,22)
    ORDER BY object_id DESC
    GROUP BY term_taxonomy_id
最佳答案 SELECT * … GROUP BY不应该工作.您的第一个示例工作的事实是MySQL的一个棘手的功能.

要使GROUP BY起作用,SELECT子句不能为*.它必须是GROUP BY列和“聚合”函数(如COUNT,SUM等)的混合体.

SELECT COUNT(*),some_column FROM … GROUP BY some_column是预期的形式.

SELECT *不会起作用.

您希望为每个term_id找到最高的object_id.

SELECT MAX(term_id),object_id FROM some_table GROUP BY object_id

那样的东西?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读