如何在SQL中带条件从其他表获取数据?附示例表结构
看起来你需要基于两张表的关联关系,结合特定条件来获取目标数据,我结合你给出的表结构和数据,给你几个常见的SQL实现方式:
基于关联查询获取带特定条件的数据
首先,你的两张表可以通过tbl_AliedMaster.Empid和tbl_PlantMaster.FSEID建立关联,下面是几种实用的写法:
1. 内连接(INNER JOIN):获取两张表匹配条件的交集数据
比如你想获取NS01工厂下所有职位为UBM的员工信息,可以这么写:
SELECT am.Id, am.Empid, am.Name, am.Designation, pm.Plantid, pm.plantcode FROM tbl_AliedMaster am INNER JOIN tbl_PlantMaster pm ON am.Empid = pm.FSEID WHERE pm.plantcode = 'NS01' AND am.Designation = 'UBM';
这个查询会返回同时满足“属于NS01工厂”和“职位是UBM”的员工,以及对应的工厂信息。
2. 左连接(LEFT JOIN):保留左表所有数据,匹配右表符合条件的内容
如果想获取所有PI职位的员工,无论他们是否关联了工厂,可以用左连接:
SELECT am.Id, am.Empid, am.Name, am.Designation, pm.plantcode FROM tbl_AliedMaster am LEFT JOIN tbl_PlantMaster pm ON am.Empid = pm.FSEID WHERE am.Designation = 'PI';
那些没有关联工厂的PI员工,对应的plantcode字段会显示为NULL。
3. 子查询方式:从一张表过滤后匹配另一张表
比如你想获取手机号以121开头的员工对应的工厂信息,可以用子查询先筛选员工,再关联工厂:
SELECT pm.Plantid, pm.plantcode, pm.FSEID, am.Name FROM tbl_PlantMaster pm WHERE pm.FSEID IN ( SELECT Empid FROM tbl_AliedMaster WHERE Mobile LIKE '121%' );
这个子查询先找出手机号符合条件的员工ID,再从工厂表中匹配对应的记录。
补充小技巧
- 给表起别名(比如
am代表tbl_AliedMaster,pm代表tbl_PlantMaster)能让SQL更简洁易读 - 如果需要更复杂的条件(比如多条件组合、范围筛选),直接在
WHERE子句中添加对应的判断即可
内容的提问来源于stack exchange,提问作者rchau
相关产品推荐
相关产品推荐

