SQLite:查找具有特定值的集合

时间:2017-11-16 17:50:28

标签: sql sqlite

PEAK (NAME, ELEV, DIFF, MAP, REGION)
CLIMBER (NAME, SEX)
PARTICIPATED (TRIP_ID, NAME)
CLIMBED (TRIP_ID, PEAK, WHEN_CLIMBED)

我需要找到 Mark和Mary攀登的高峰

我做了这个,但它没有工作:

        select *
        from participated, climbed
        where participated.name="MARY" or "MARK" and participated.trip_id= climbed.trip_id

我也尝试过:

Group By name, peak
Having name="MARY" or "MARK"

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您可以使用IN

    select *
    from participated
    INNER JOIN  climbed ON participated.trip_id= climbed.trip_id
    where participated.name IN ("MARY" , "MARK") 

或正确的OR

    select *
    from participated
    INNER JOIN  climbed ON participated.trip_id= climbed.trip_id
    where participated.name = "MARY" OR  participated.name =  "MARK"

答案 1 :(得分:0)

如果您只想找到两者 climed的峰值,请执行

select peak
from participated
join climbed on participated.trip_id = climbed.trip_id
group by peak
having sum(name='MARY') > 0
   and sum(name='MARK') > 0

答案 2 :(得分:0)

如果你只想要达到峰值,你可以这样做:

select c.peak
from climbed c join
     trip t
     on c.trip_id = t.trip_id
where name in ('MARY', 'MARK')
group by c.peak
having count(distinct name) = 2;

请注意使用正确的JOIN语法。