gpt4 book ai didi

sql - 如果存在连接的数据条目,则返回 true (1),否则在 MS-SQL 中返回 false (0)

转载 作者:行者123 更新时间:2023-12-02 00:50:53 24 4
gpt4 key购买 nike

我有一个 SQL 语句,它以一对一的关系连接到两个不同的表。对于这些连接中的每一个,我想返回一个 BIT值(0 或 1),如果连接成功与否。

假设我们有一个基表 Base和 table AB ,它们通过 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

最佳答案

您可以使用以下内容,使用 CASE WHEN而不是 ISNULL :

SELECT Base.*, A.id, B.id, 
CAST(CASE WHEN A.id IS NULL THEN 0 ELSE 1 END AS BIT) AS IsA,
CAST(CASE WHEN B.id IS NULL THEN 0 ELSE 1 END AS BIT) AS IsB
FROM Base LEFT JOIN A ON Base.id = A.base_id
LEFT JOIN B ON Base.id = B.base_id

demo on dbfiddle.uk

与您当前的方法相比,此解决方案具有相同的效率。但也请参阅 this answer (check multiple columns for NULL values) .在那里你可以看到 ISNULL解决方案效率较低。在你的情况下,它没有什么大的区别。

还要小心: ISNULL也可以返回 0如果列值为 0 .因此,使用您当前的方法,您将获得 False在这种情况下。

关于sql - 如果存在连接的数据条目,则返回 true (1),否则在 MS-SQL 中返回 false (0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com