给出表格
station table
id | name
1 | Train A
2 | Train B
3 | Train C
4 | Train D
国家/地区表
id | name
1 | country A
2 | country B
3 | country c
4 | country D
trainCountry table
idTrain | idCity
1 | 1
1 | 2
1 | 4
2 | 1
2 | 4
3 | 2
3 | 3
3 | 4
4 | 1
4 | 2
4 | 3
4 | 4
许多列车和许多国家都有很多列车,每个国家都有4列列车。每列火车都有自己的路径,例如火车A可以从A国到B到C.火车B只能从A国到B国。我需要得到的火车只有从国家B到国家C的火车C和火车D的路径。
我通过使用这个sql语句尝试了它,但我没有得到正确的记录:
select *
from cityTrain ct
where ct.idC = (select id from city c where c.id = 2 OR c.id = 3)
答案 0 :(得分:1)
一种方法是使用group by和:
SELECT idTrain
FROM trainCountry
WHERE idCity IN (2,3)
GROUP BY idTrain
HAVING COUNT(DISTINCT idCity) = 2
这将为您提供通过城市2和3的所有列车。
另一种方法是使用exists:
SELECT idTrain
FROM trainCountry t0
WHERE idCity = 2
AND EXISTS
(
SELECT 1
FROM trainCountry t1
WHERE t0.idTrain = t1.idTrain
AND idCity = 3
)
答案 1 :(得分:1)
select idTrain from traincountry where idCity=2
intersect
select idTrain from traincountry where idCity=3