我有两个表tbPerson和tbComment,数据如下:
tbPerson
PersonID FirstName LastName
1 William Tell
2 Joe Smith
3 Sam Hampton
tbComment
CommentID PersonID CommentValue CommentPosition
45 2 This is my comment 100
46 2 This is my second comment 100
47 2 This is my third comment 100
48 1 A comment 101
49 3 This comment rules 102
50 3 A comment here 102
我需要一个只返回的查询:
William Tell 101
Joe Smith 100
Sam Hampton 102
我认为它类似于下面,但这会返回多行。我只想要三排。
SELECT FirstName, LastName, CommentPosition
FROM tbPerson
JOIN tbComment ON tbPerson.PersonID = tbComment.PersonID
GROUP BY FirstName, LastName, CommentPosition
答案 0 :(得分:1)
对于您的数据,您的查询应仅返回三行。如果您对某人有多条评论,则需要选择所需的评论位置。
以下内容将返回最小值:
SELECT FirstName, LastName, MIN(CommentPosition) as CommentPosition
FROM tbPerson JOIN
tbComment
ON tbPerson.PersonID = tbComment.PersonID
GROUP BY FirstName, LastName;
请注意,CommentPosition
条款已删除GROUP BY
。
答案 1 :(得分:0)
如果评论位置有所不同,请尝试以下操作:
SELECT FirstName, LastName, CommentPosition
FROM tbPerson
INNER JOIN (
SELECT PersonID, MIN(CommentPosition) AS CommentPosition
FROM tbComment
GROUP BY PersonID
) T1 ON tbPerson.PersonID = T1.PersonID
这也将处理多个具有相同名称的人的情况。
答案 2 :(得分:-1)
您可以使用SELECT DISTINCT FirstName, LastName, ...
来获得您想要的内容。这是一个关于它的教程。