Sql查询以显示不同的记录
问题描述:
我有一个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
答
仅显示每个用户的最新帖子,创建一个派生表只包含每个用户的最新帖子的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;
答
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
答
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
这些记录都是不同的,你在哪里看到受骗者记录?你可以在SELECT之后使用DISTINCT关键字,但是我没有看到基于你的样本数据的任何欺骗 – Sparky
它没有工作 – Kurkula
正如@Sparky所说,它们已经不同了。例如,每个用户都有不同的标题。如果您想每次只显示一个,您想要显示哪个标题?最新的?或者只有任何一个......? – wwkudu