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

sql– 指定从GROUP BY子句返回的记录,第1张

概述编辑澄清我可能误解了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

那样的东西? 总结

以上是内存溢出为你收集整理的sql – 指定从GROUP BY子句返回的记录全部内容,希望文章能够帮你解决sql – 指定从GROUP BY子句返回的记录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存