SQL返回双数据(可能是错误的SQL查询)

时间:2016-09-30 09:25:23

标签: mysql sql

问题&&上下文

我得到了双倍的结果。表注册包含2列&包含event_idparticipant_id的2行1,31,1

现在,当我选择所有注册(select * from registration)时,这确实有效。

2名参与者的姓名(firstname, lastname)('test' ,'test1')('Gregor', 'unknown')

期望的结果

我想制作一个搜索功能,只返回为第一个或最后一个名字中带有'test'的事件注册的参与者。

当前结果

通过下面的查询,我得到4个结果(所有参与者都是相同的)。

select * from participant p, event e, registration r 
            where p.firstname LIKE '%test%'
            OR p.lastname LIKE '%test%' 
            AND p.id = r.participant_id 
            AND e.id = r.event_id 
            AND e.id = 1;

错误消息

none,只返回4行而不是1行。

1 个答案:

答案 0 :(得分:5)

展开OR,明确有帮助...尝试

select distinct * 
from participant p, event e, registration r 
where (p.firstname LIKE '%test%'
  OR p.lastname LIKE '%test%' )
AND p.id = r.participant_id 
AND e.id = r.event_id 
AND e.id = 1;