基于多表多列条件为Table2新增列的SQL查询需求
解决方案:根据关联表条件生成新列
我们可以通过关联两个表,并使用CASE条件语句实现需求,具体SQL代码如下:
SELECT t2.ID, t2.Col1, t2.Col2, CASE WHEN t1.Type = 'EE' AND t2.Col1 = 'Red' AND t2.Col2 = 'Yes' THEN 'Electric' WHEN t1.Type = 'MM' AND t2.Col1 = 'Blue' AND t2.Col2 = 'Yes' THEN 'Mechanic' ELSE NULL END AS NewColumn FROM Table2 t2 INNER JOIN Table1 t1 ON t2.ID = t1.ID;
逻辑说明
- 表关联:通过
INNER JOIN以ID为关联键,将Table1的Type字段与Table2的记录匹配,确保每条Table2的记录能获取到对应的Type值 - 条件判断:使用
CASE语句依次匹配需求中的两个规则,符合条件时返回指定字符串,其余情况返回空值(NULL)
执行上述查询后,将得到符合预期的结果表:
| ID | Col1 | Col2 | NewColumn |
|---|---|---|---|
| 1 | Red | Yes | Electric |
| 2 | Blue | Yes | Mechanic |
| 3 | Red | No |
内容的提问来源于stack exchange,提问作者Andrei Clu
相关产品推荐
相关产品推荐

