chaleaoch
V2EX  ›  问与答

一个 sql 不会写...

  •  
  •   chaleaoch · Feb 7, 2020 · 2025 views
    This topic created in 2472 days ago, the information mentioned may be changed or developed.
    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
    );

    谢谢
    8 replies  •  2020-02-07 16:35:18 +08:00
    chaleaoch
    chaleaoch
    OP
    Feb 7, 2020
    1
    sorry 忘记用 md 了 排版感人.
    glacer
    glacer
    Feb 7, 2020
    2
    id 放 group by 里...
    chaleaoch
    chaleaoch
    OP
    Feb 7, 2020
    3
    @glacer 你是认真的吗?
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Feb 7, 2020
    4
    看不懂你想要啥
    chaleaoch
    chaleaoch
    OP
    Feb 7, 2020
    5
    @liprais 我想要根据 a,b,c 三个字段 group by 取 d 的最大值的那条记录的 id.
    glacer
    glacer
    Feb 7, 2020
    6
    @chaleaoch 从你这两条 SQL 来看,你根本就不会写 SQL
    chaleaoch
    chaleaoch
    OP
    Feb 7, 2020
    7
    @glacer 是啊 所以才发帖求助啊.
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Feb 7, 2020❤️1
    8
    @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

    如果有重复的话,你需要写清楚到底要哪一条
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1982 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:42 · PVG 10:42 · LAX 18:42 · JFK 21:42
    ♥ Do have faith in what you're doing.