sql - 仅当 SQL 中存在记录时加入才有效
问题描述
我有 2 张桌子 - table1 和 table2。
在表 2 中,表 1 有多个记录匹配条件,基于:
c_type、h_level、循环、e_id
仅当存在 EXACT 1 匹配时,我才需要 RIGHT 表中的记录。如果不是,element_nm 应该为 NULL,所以我在输出中的记录与左表完全相同。
SELECT a.*,
b.element_nm
FROM table1 a
LEFT JOIN table2 b ON
a.c_type = b.c_type
AND a.h_level = b.h_level
AND a.loop = b.loop
AND a.e_id = b.e_id
ORDER BY a.file_name,
a.line_num asc;
解决方案
由于这只是一个值,您可以在 select 子句中使用 Sub 查询。否则,您将在 aLEFT OUTER JOIN
或使用中使用子查询OUTER APPLY
。
SELECT
t1.*,
(
SELECT MIN(t2.element_nm)
FROM table2 t2
WHERE t2.c_type = t1.c_type
AND t2.h_level = t1.h_level
AND t2.loop = t1.loop
AND t2.e_id = t1.e_id
HAVING COUNT(*) = 1
) AS element_nm
FROM table1 t1
ORDER BY t1.file_name, t1.line_num;
推荐阅读
- php - 没有得到多条记录导致foreach
- javascript - 剑道本地时间弹出编辑
- javascript - Laravel Dusk Javascript 确认()
- oauth - 雅虎oauth和oauth2.0登录故障
- java - 带有 SQLite 的多项选择测验应用程序(新活动中不显示分数)
- abap - 按列中的前两个日期限制行。如何?
- c# - C#:Process.Start 在控制台中工作,但在服务中不工作
- macos - Mach-O 平台上的库版本控制
- tensorflow - cifar100 数据集由重复图像组成?
- ethereum - 安全地公开您的网络,让任何人都可以访问您的智能合约