如何根据表中的字段去查询其它表中数据
现在有如下表
我有三个表,分别为 tb_result表、 tb_indoor表、 tb_outdoor表
tb_result 表中有如下数据
| work_id | type | 其他数据 |
|---|---|---|
| 2020001 | 1 | %%%%% |
| 2020002 | 0 | ********* |
| 2020003 | 1 | *********** |
| 2020004 | 0 | ********** |
在type字段中,1代表outdoor,0代表outdoor
tb_indoor 表中有如下数据
| id | work_id |
|---|---|
| 1 | 2020002 |
| 2 | 2020004 |
tb_outdoor中有如下数据
| id | work_id |
|---|---|
| 1 | 2020001 |
| 2 | 2020003 |
现在我要做的是根据tb_result中的type字段,分别到tb_indoor和tb_outdoor中查询work_id所对应的id字段。
假设我要查询从tb_result中查询工号为2020001的所有的信息,包括他在tb_indoor或者tb_outdoor的id。我就要根据tb_result中type这个字段分别到tb_indoor或者tb_outdoor的查询id,那么SQL语句可以这样写:
select
work_id,
其他数据,
//如果tb_result=1 就去tb_outdoor 中查询数据
case when type=1 then (select id from tb_outdoor where work_id='2020001')
//否则去tb_indoor中查询数据
else (select id from tb_indoor where work_id='2020001')
end as id//将字段命名为id
from tb_result
where work_id='2020001'
SQL if 和 case when查询示例: 看这里.
参考文章 这儿.
SQL Case When 实践
本文介绍了一种使用SQL的Case When语句来根据字段值动态选择查询不同表的方法。通过具体示例,展示了如何根据tb_result表中的type字段,分别查询tb_indoor和tb_outdoor表中的对应数据。






