【发布时间】:2020-11-11 18:07:35
【问题描述】:
在我的数据库中,ts.ID 仅出现在 l.origin 列中。我需要同时搜索 l.orgin 和 l.destination。为什么当我查询 l.origin OR l.destination 时,它会显示带有 ts.ID 的所有结果,而不是仅显示带有连接到 Sheffield 的 ts.ID 的特定结果。有没有更简单的方法来搜索这两个列?
SELECT F.name, F.phone
FROM Franchise F
WHERE F.name IN (SELECT C.companyName
FROM company c
WHERE c.routeNumber IN (SELECT c.`number`
FROM Line l
WHERE l.origin OR l.end IN (SELECT ts.ID
FROM TrainStation ts
WHERE ts.description = 'Sheffield' )));
感谢您的帮助。我对此很陌生。
【问题讨论】:
-
查看JOINs
-
查看格式化代码以提高可读性。缩进有很长的路要走。
-
您可能误解了
OR在您的WHERE l.origin OR l.end ...子句中的工作方式:它确实不是 的意思是“找到origin或end所在的行trainstation ids 列表。它的意思是“找到那些origin具有值或end在trainstation ids 列表中的行。比较the documentation of the OR operator。
标签: mysql sql operators dbeaver