一个 sql 不会写...

2020-02-07 16:22:18 +08:00
 chaleaoch
select id, max(field_d)
from table_name
group by field_a,field_b,field_c;

报错了 id must appear in the GROUP BY clause or be used in an aggregate function

所以 是不是只能用子查询了?

SELECT ID
FROM
table_name
WHERE
( field_a, field_b, field_c, field_d) IN (
SELECT
"field_a",
"field_b",
"field_c",
MAX ( field_d ) AS "field_d"
FROM
"table_name"
GROUP BY
field_a,
"field_b",
"field_c"
ORDER BY
"field_a" DESC
);

谢谢
1422 次点击
所在节点    问与答
8 条回复
chaleaoch
2020-02-07 16:22:38 +08:00
sorry 忘记用 md 了 排版感人.
glacer
2020-02-07 16:23:17 +08:00
id 放 group by 里...
chaleaoch
2020-02-07 16:25:48 +08:00
@glacer 你是认真的吗?
liprais
2020-02-07 16:27:10 +08:00
看不懂你想要啥
chaleaoch
2020-02-07 16:31:48 +08:00
@liprais 我想要根据 a,b,c 三个字段 group by 取 d 的最大值的那条记录的 id.
glacer
2020-02-07 16:33:41 +08:00
@chaleaoch 从你这两条 SQL 来看,你根本就不会写 SQL
chaleaoch
2020-02-07 16:34:14 +08:00
@glacer 是啊 所以才发帖求助啊.
liprais
2020-02-07 16:35:18 +08:00
@chaleaoch
d 没有重复的话可以这样写

select id
from table t0 join
(
select max(d) as d from table group by a,b,c
) t1
on t0.d = t1.d

如果有重复的话,你需要写清楚到底要哪一条

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642797

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX