2

我需要从表中获取type最大值为的值。我也分组给你看。messageidmesaj_mesajlartype

我的查询:

SELECT
   mesaj_konular.id AS topicid,
   mesaj_mesajlar.id AS messageid,
   mesaj_mesajlar.tip AS type,
   uyeler.ad AS uname
FROM mesaj_konular 
INNER JOIN uyeler ON uyeler.id = mesaj_konular.uid 
INNER JOIN mesaj_mesajlar ON mesaj_mesajlar.konuid = mesaj_konular.id
GROUP BY 
   topicid,
   type

桌子:

topicid     messageid   type    uname
1           1           0       x
1           2           1       x
2           20          0       x
3           15          0       x
3           17          1       x

结果应该是:

topicid     messageid   type    uname
1           2           1       x
2           20          0       x
3           17          1       x
4

1 回答 1

2

一种方法是获取MAX()每个 topicid 的类型:

SELECT
   mesaj_konular.id AS topicid,
   mesaj_mesajlar.id AS messageid,
   mesaj_mesajlar.tip AS type,
   uyeler.ad AS uname
FROM mesaj_konular 
    INNER JOIN uyeler ON uyeler.id = mesaj_konular.uid 
    INNER JOIN mesaj_mesajlar ON mesaj_mesajlar.konuid = mesaj_konular.id
    INNER JOIN (
           SELECT konuid, MAX(tip) MaxTip
           FROM mesaj_mesajlar 
           GROUP BY konuid
    ) max_mesaj_mesajlar ON mesaj_mesajlar.konuid = max_mesaj_mesajlar.konuid 
          AND mesaj_mesajlar.tip = max_mesaj_mesajlar.MaxTip
GROUP BY 
   topicid
于 2013-06-08T21:45:38.817 回答