从数据库查询返回DISTINCT行

时间:2011-05-09 15:29:43

标签: sql distinct

我对SQL很新,所以如果有一个简单的解决方案就道歉。

我有这条SQL在3个表上执行连接。

    SELECT a.group_leader, b.forum_name
    FROM flightuser_group a
    INNER JOIN flightacl_groups c ON a.group_id = c.group_id
    JOIN flightforums b ON c.forum_id = b.forum_id
    WHERE a.user_id = '60'
    ORDER BY a.group_leader DESC

此查询返回:

    group_leader   forum_name
    1              tmpSQJ
    0              jobby7
    0              jobby5
    0              tmpSQJ

我试图只保留第一个tmpSQJ条目并删除第二个,但无法确定DISTICT子句的去向。

非常感谢提前。

3 个答案:

答案 0 :(得分:0)

对于MySQL,请在LIMIT 1之后添加ORDER BY

对于MS SQL,请在TOP 1之后添加SELECT

这两种风格只会让你获得记录集中的第一条记录。

答案 1 :(得分:0)

您可以尝试基本上表现相同的GROUP BY:

SELECT a.group_leader, b.forum_name
FROM flightuser_group a
INNER JOIN flightacl_groups c ON a.group_id = c.group_id
JOIN flightforums b ON c.forum_id = b.forum_id
WHERE a.user_id = '60'
GROUP BY b.forum_name
ORDER BY a.group_leader DESC

您还可以查看 flightforums

的“ INNER JOIN

答案 2 :(得分:0)

试试这个:

 SELECT MAX(a.group_leader), b.forum_name     
 FROM flightuser_group a     INNER JOIN flightacl_groups c ON a.group_id = c.group_id   
   JOIN flightforums b ON c.forum_id = b.forum_id    
    WHERE a.user_id = '60' 
    GROUP BY  b.forum_name  
    ORDER BY a.group_leader DESC