压缩多个嵌套的select语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了压缩多个嵌套的select语句相关的知识,希望对你有一定的参考价值。
我想为每个userId获取最新的投票(基于dateCreated)。下面我的尝试有效,但我觉得多个嵌套的SELECT语句非常低效。谁有更好的解决方案?我是SQL的新手,所以我很感激您的解决方案以及代码。
SELECT * FROM
(
SELECT DISTINCT t.userId
FROM
(
SELECT userId,vote,dateCreated
FROM pgVote
WHERE categoryId = 528
ORDER BY dateCreated DESC
)
AS t
)
AS u
答案
SELECT aa.*
FROM pgVote aa
INNER JOIN (
SELECT userId, MAX(dateCreated) as latestDate
FROM pgVote
WHERE categoryId = 528
GROUP BY userId
) bb ON aa.userId = bb.userId AND aa.dateCreated = bb.latestDate
表bb只是具有最新日期的用户标识列表。一旦你内部加入aa是完整的表,那么它将为你过滤最新的投票。
以上是关于压缩多个嵌套的select语句的主要内容,如果未能解决你的问题,请参考以下文章