2014-06-07 55 views
2

我有一个SQL查询,我试图通过最新的post desc显示不同的记录,如每个用户订单的一个帖子。怎么做?我尝试了分组,失败了。Sql查询以显示不同的记录

SELECT jca.id, 
ju.name, 
jca.actor, 
jca.title as title, 
jca.created as postedDate 
FROM community_activities jca 
left join users ju on jca.actor=ju.id 
left join community_users jcu on jcu.userid=ju.id 
ORDER BY jca.id, jca.postedDate DESC LIMIT 0 , 50; 


id name actor title 
200  chandra 12  hello man 
201  chandra 12  hey man 
202  shayam 13  hello hero 
203  chandra 12  hello yoyo 
204  kokila 16  yep 
205  chandra 12  hello y 
206  chandra 12  hello abc 
+2

这些记录都是不同的,你在哪里看到受骗者记录?你可以在SELECT之后使用DISTINCT关键字,但是我没有看到基于你的样本数据的任何欺骗 – Sparky

+0

它没有工作 – Kurkula

+0

正如@Sparky所说,它们已经不同了。例如,每个用户都有不同的标题。如果您想每次只显示一个,您想要显示哪个标题?最新的?或者只有任何一个......? – wwkudu

回答

1

仅显示每个用户的最新帖子,创建一个派生表只包含每个用户的最新帖子的ID,并加入community_activities到该表,所以只会显示那些结果。

SELECT jca.id, 
ju.name, 
jca.actor, 
jca.title as title, 
jca.created as postedDate 
FROM community_activities jca 

JOIN (SELECT MAX(id) max_id 
FROM community_activities 
GROUP BY actor) t1 on t1.max_id = jca.id 

LEFT JOIN users ju on jca.actor=ju.id 
LEFT JOIN community_users jcu on jcu.userid=ju.id 
ORDER BY jca.id, jca.postedDate DESC LIMIT 0 , 50; 
+0

结果集未按排序依据我认为问题可能是在jca.postedDate DESC – Kurkula

+1

@Chandana是(作者,创建)是唯一的还是可能存在具有相同(作者,创建)的多行? – FuzzyTree

+0

我想显示一个作者的一个记录。作者可能会张贴多个帖子,但只有作者应该显示最新的帖子。 – Kurkula

1
SELECT 
    MAX(jca.id),  -- just selects maximum of each column , 
    DISTINCT ju.name, -- max() may be wrong for your scenario . 
    MAX(jca.actor), 
    MAX(jca.title) as title, 
    MAX(jca.created) as postedDate 
FROM 
    community_activities jca 
left join 
    users ju on jca.actor=ju.id 
left join 
    community_users jcu on jcu.userid=ju.id 
GROUP BY 
    ju.name; 

输出:

202  shayam 13  hello hero 

204  kokila 16  yep 

206  chandra 12  hello abc 
+0

它抛出错误。 '您的SQL语法错误'distinct ju.name, MAX(jca.actor), MAX(jca.title)as title, MAX(jca.c'at line 2 – Kurkula

-1
SELECT  jca.id, 
      ju.name, 
      jca.actor, 
      jca.title AS title, 
      MAX(jca.created) AS postedDate 
FROM  community_activities jca 
LEFT JOIN users ju ON (jca.actor = ju.id) 
LEFT JOIN community_users jcu ON (jcu.userid = ju.id) 
ORDER BY jca.created DESC 
+0

以上查询只显示一个最新的行我试图为每个用户获取一个最新的记录。 – Kurkula