You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:36