Mysql SQL连接左获取最大值(日期)

Mysql SQL连接左获取最大值(日期),mysql,sql,join,greatest-n-per-group,Mysql,Sql,Join,Greatest N Per Group,我有这些桌子: 通知 id INT 日期时间 。。。 主题 身份证 名字 注意主题 身份证通知书 id_主题 我想得到每个主题的最新通知 SELECT id_theme, n.id FROM notice_theme LEFT JOIN ( SELECT id, cdate FROM notice ORDER BY cdate DESC ) AS n ON notice_theme.id_notice = n.id GROUP BY id_theme

我有这些桌子:

  • 通知
    • id INT
    • 日期时间
    • 。。。

  • 主题
    • 身份证
    • 名字

  • 注意主题
    • 身份证通知书
    • id_主题
我想得到每个主题的最新通知

SELECT id_theme, n.id
FROM notice_theme
LEFT JOIN (
    SELECT id, cdate
    FROM notice
    ORDER BY cdate DESC
) AS n ON notice_theme.id_notice = n.id
GROUP BY id_theme

结果不好。一个主意?谢谢。

有很多方法可以解决这个问题,但我已经习惯了这样做。需要额外的子查询来分别计算每个
ID
的最新
cDate

SELECT  a.*, c.*
FROM    theme a
        INNER JOIN notice_theme b
            ON a.ID = b.id_theme
        INNER JOIN  notice c
            ON b.id_notice = c.ID
        INNER JOIN
        (
            SELECT  a.id_theme, MAX(b.DATE_CREATE) max_date
            FROM    notice_theme a
                    INNER JOIN notice b
                        ON a.ID_Notice = b.ID
            GROUP   BY a.id_theme
        ) d ON  b.id_theme = d.id_theme AND
                c.DATE_CREATE = d.max_date

您的最大(日期)在哪里?不能保证将保留联接表的ORDER BY。将订单放在外部选择中。您需要添加Max(n.cdate)感谢您的回答,以及您的查询(@JW):>id主题----id通知----date创建时间----2----2013-03-31 09:18:21>4----2----2013-03-31 09:18:21>1----7----2013-03-31 23:27:28>2----7----2013-03-31 23:27:28>4----11----2013-02-16 04:40:21>5----12----2013-02-05 20:18:21>4------13------2013-03-31 23:27:28>2------14------2013-03-15 20:18:21对于a.id的组,我的查询也有同样的问题:/你能给样本记录指定结果吗?当出现这样的问题时,总是用你想要的结果添加样本记录,这样我们就可以更直观地了解问题
:)