我在使用sql请求时遇到了一些问题:
SELECT DISTINCT b . *
FROM follow a
INNER JOIN position b
ON a.user_id = b.follow_id
INNER JOIN referent_follow c
ON a.user_id = c.follow
WHERE c.referent = 14
GROUP BY b.follow_id
ORDER BY b.date DESC
此请求有效。我添加一个组,因为我不希望结果中有相同的follow_id。这工作我在reponse中从来没有相同的follow_id但是对于每个follow_id,请求返回第一个并且我想获得最后一个(按日期desc排序)
在此结束时按日期desc添加订单,此订单为最终结果,而不是follow_id以选择
由于
答案 0 :(得分:1)
如果要返回max(date)
,则可以使用子查询:
SELECT b.*
FROM follow a
INNER JOIN position b
ON a.user_id = b.follow_id
INNER JOIN
(
select max(date) MaxDate, follow_id
from position
group by follow_id
) b1
on b.follow_id = b1.follow_id
and b.date = b1.MaxDate
INNER JOIN referent_follow c
ON a.user_id = c.follow
WHERE c.referent = 14
ORDER BY b.date DESC
子查询将为每个max(date)
返回follow_id
,然后将该结果返回到position
表,以返回position
表中的剩余数据。 / p>
答案 1 :(得分:1)
这样的事情会起作用。
select JustTheFieldsYouNeed, max(datefield) maxdate
from follow a join position b a.user_id = b.follow_id
join referent_follow c on a.user_id = c.follow
where c.referent = 14
group by JustTheFieldsYouNeed
如果你确实需要从位置开始的所有领域,请输入它们。