【发布时间】:2011-10-15 12:54:55
【问题描述】:
在执行连接查询时,我得到了重复的数据,而不是“distinct”关键字。我调暗了更多的谷歌,却一无所获。表名是“Event”,其中包含事件列表,另一个表是 UserEvents,它向用户分配通风口。 On 事件可以分配给多个用户。我使用的是 SQL Server 2005。
Events
eid | ename
-----------------
e1 | Test event1
e2 | test ecent2
UserEvents
id| uid | eventId
-----------------
1 | u1 | e1
2 | u1 | e2
3 | u2 | e1
查询:
select distinct
Events.eid, Events.ename,UserVents.uid
from
Events
inner join
UserEvents on
UserEvents.eventID=Events.eid
输出:
eid | ename | uid
-------------------
e1 | Test event1 | u1
e2 | Test event2 | u2
e1 | test event1 | u1
问题:
在这里,Event 是重复的,而不是不同的关键字。它不应该重复事件“e1”。 请帮助我。我如何更改查询?这是 SQL Server 2005 中的问题吗? 请帮忙
【问题讨论】:
-
你的输出不是你真正得到的。
uid列中有哪些值?我猜每个具有相同eid的行的值都不同,所以你的 distinct 正在工作。 -
@XXXcoder - 你有什么特别的理由拒绝我的回答吗?它为您的示例数据提供了完全准确的结果,而不是您问题中的虚构数据(您的最后一行不正确),并解释了为什么您对
DISTINCT的理解不正确。 -
@MartinSmith,你的输出是我的问题。我不希望事件重演。请仔细阅读我的问题。
-
输出有
u2和e2在同一行是错字吗?加入eid不会给出这样的结果。此外,您对给定数据的预期输出是什么。 -
@XXXcoder - 我确实读过你的问题。您询问您得到的结果是否是“SQL Server 2005 中的问题”。答案是“否”
DISTINCTisn't broken 它正在返回它应该返回的内容。您还没有解释 - 假设有多个可能的uid值可以针对您想要选择的特定Events.eid, Events.ename返回。
标签: sql sql-server-2005 distinct