【发布时间】:2018-06-28 10:35:37
【问题描述】:
我有两张桌子。我有通过INNER JOIN 子句将第一个表连接到第二个表的查询。结果表明存在冗余或重复的结果。在我下面的示例中,结果有 4 条记录。我想区分SdiID,我希望只得到两条记录,因为sdiID 只有两条唯一记录。我尝试在选择后添加DISTINCT sdiID,但仍然有 4 条记录。请帮忙。这是我的查询。
DECLARE @PageNumber AS INT, @RowspPage AS INT
SET @PageNumber = 1
SET @RowspPage = 20
SELECT totalCount = COUNT(*) OVER(), mailbox.ID as mailboxID,
sdi.ID as sdiID
FROM [SDI].dbo.UserDocumentLocationOutbox mailbox
INNER JOIN [SDI].dbo.SDITransaction
sdi on mailbox.SDITransactionID=sdi.ID
INNER JOIN [SYSDB].dbo.DocumentType doc on sdi.DocumentTypeID=doc.ID
where mailbox.CommunityID = '9ff10c7a-37f5-4580-9163-6ada55194ca7'
and mailbox.UserProfileID = 'f9791614-8cc0-42e3-87d1-53709bc1e099'
and doc.CommunityID = '9ff10c7a-37f5-4580-9163-6ada55194ca7'
and doc.Active=1 and doc.HideInMailbox=0
order by sdi.ProcessedDateTime desc
OFFSET ((@PageNumber - 1) * @RowspPage) ROWS FETCH NEXT @RowspPage ROWS ONLY
这是结果
【问题讨论】:
-
对于每个“重复”sdilD 记录对,有两个不同的mailboxID!你希望如何解决这个问题?如果您不关心mailboxID,只需使用 distinct 但从 select 子句中删除mailboxID。请注意,不同的字段适用于所有字段,而不仅适用于不同单词之后的字段。另一种选择是将所有邮箱 ID 放在逗号分隔的字段中,这需要一些工作。告诉我们您需要什么。
-
Distinct 将在完整的行上工作,并且由于 sdiID 有不同的邮箱 ID,因此您将获得 sdiID 的两到两行。从选择中删除mailboxid后尝试,您将只有两行。
-
您是要计算 sdiID 的邮箱 ID 数,还是要数什么?
-
感谢各位的帮助。邮箱 ID 并不重要。下面的答案符合我的问题。
标签: sql sql-server adhoc-queries