mysql - SQL:如何在嵌套查询中搜索两列?
问题描述
在我的数据库中, 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' )));
谢谢你的帮助。我对此很陌生。
解决方案
添加到 Chris 的评论中,该WHERE l.origin OR l.end IN ...
部分可以通过多种方式解决,包括使用一个CASE WHEN
块,每个字段(l.origin 和 l.end)分别针对条件进行测试,如下所示:
WHERE
(CASE
WHEN l.origin IN (
SELECT ts.ID
FROM TrainStation ts
WHERE ts.description = 'Sheffield')
THEN 1
WHEN l.end IN (
SELECT ts.ID
FROM TrainStation ts
WHERE ts.description = 'Sheffield')
THEN 1
ELSE 0
END
) = 1
;
推荐阅读
- arrays - 如何将数组元素乘以下一个元素并在Swift中作为数组输出
- sql - MS SQL递归获取带有父ID的子ID
- android - 参数不在其范围内应该扩展
- react-native - 如何知道 ScrollView 内容是可滚动的还是不响应原生的?
- echarts - 如何使用 ECharts 操作关系图中的节点?
- c# - 我们称之为代码块
- javascript - 如何过滤掉复杂查询中的文本字段?
- javascript - 如何基于在我的 .ts 文件中的数组中搜索值数组来禁用和选中复选框
- c++ - 类的 C++ 友元函数无法访问封装的类
- php - HTML 电子邮件不适用于表格格式