gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:59:20 27 4
gpt4 key购买 nike

编辑澄清

我可能误解了 GROUP BY 的用法,所以我只是重新表述我的问题,而不对如何解决问题做出假设:

我有一个 term_id 列表和一个包含对象的表(其中有一个 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, 21, 22)
ORDER BY object_id DESC
) wtt
GROUP BY term_taxonomy_id

这是语法错误

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

最佳答案

SELECT *... GROUP BY 不应该工作。您的第一个示例有效是 MySQL 的一个古怪功能。

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

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 子句返回的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191518/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com