【发布时间】:2019-09-02 07:44:58
【问题描述】:
我有一个 SQL 语句,它以一对一的关系连接到两个不同的表。对于这些连接中的每一个,如果连接成功与否,我想返回一个 BIT 值(0 或 1)。
假设我们有一个基表Base 和表A 和B,它们通过一个公共ID 上的LEFT JOIN 连接在一起。我想返回ID,还有一个字段IsA和一个字段IsB。
在 Microsoft SQL Server 中最有效地执行此操作的最佳实践解决方案是什么?
顺便说一下,我目前的做法是这样的:
CAST(ISNULL(A.ID, 0) AS BIT) AS IsA,
CAST(ISNULL(B.ID, 0) AS BIT) AS IsB
【问题讨论】:
-
您的解决方案很短(这很好),但它依赖于转换为位会将任何非零值提升为 1 的事实(这可能不直观)。我认为答案中提出的 CASE-WHEN-solutions 更具可读性。
标签: sql sql-server join