DISTINCT
относится ко всему списку столбцов.Весь ряд должен быть одинаковым, чтобы его исключить.
Результаты, заданные вами в вашем вопросе, не являются полными, так как вы пропустили столбец uid
.
WITH Events(eid,ename) AS(
SELECT 'e1' ,'Test event1' UNION ALL
SELECT 'e2' ,'test ecent2')
,UserEvents(id,uid,eventId) AS
(
SELECT 1,'u1' , 'e1' UNION ALL
SELECT 2,'u1' , 'e2' UNION ALL
SELECT 3,'u2' , 'e1'
)
select distinct
Events.eid, Events.ename,UserEvents.uid
from
Events
inner join
UserEvents on
UserEvents.eventId=Events.eid
Возвращает
eid ename uid
---- ----------- ----
e1 Test event1 u1
e1 Test event1 u2
e2 test ecent2 u1
Ни один изстроки одинаковые.