【发布时间】:2018-06-21 13:58:04
【问题描述】:
我有两张表,不是实际的,我试图在这里复制这种情况:
tblMstPost 具有大量列(例如 20)。我这里只添加两个。
PostId Title
1 First Post
2 Second Post
3 Third post
tblTrnComment
CommentId PostId Comment
1 1 Hello
2 1 Hi
3 1 Hey
4 2 Test
5 3 Hello
现在我只想要来自 post 表的数据。我不需要评论表中的任何数据。 从 post 表中获取数据的条件是我需要有评论“Hello”和“Hi”的帖子。
现在我可以这样写了:
SELECT p.*
FROM tblMstPost AS p
INNER JOIN tblTrnComment AS c
ON p.PostId = c.PostId
WHERE c.CommentId IN (1, 2, 5)
上面的查询将给出两个相同行且 PostId 为 1 的结果。
PostId Title
1 First Post
1 First Post
3 Third post
现在我想删除相同的行之一。我已经尝试过DISTINCT,但我在 Post 表上的一列具有text 数据类型,因此,DISTINCT 不起作用。当我GROUP BY p.PostId SQL 服务器对所有列提出相同的要求时:[column] is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause。请注意,post 表有大量列,我不想将它们全部添加到GROUP BY 语句中。
除了使用WHERE IN子查询,还有其他解决办法吗?
更新:我在 Youtube 上找到了这个视频,它清楚地解释了存在和我的问题:https://youtu.be/zfgJ3ZmAgNw
【问题讨论】:
-
添加 group by 子句
标签: sql sql-server join