gpt4 book ai didi

SQL Server 连接其他表中不存在的位置

转载 作者:行者123 更新时间:2023-12-03 01:27:40 27 4
gpt4 key购买 nike

+-------------------+   +-------------------+   +---------------------+
| Service | | Asset | | AssetService |
+-------------------+ +-------------------+ +---------------------+
| Id | Name | | Id | Name | | AssetId | ServiceId |
|-------------------| |-------------------| |---------------------|
| 1 | Service 1 | | 1 | Asset 1 | | 1 | 1 |
| 2 | Service 2 | | 2 | Asset 2 | | 1 | 2 |
| 3 | Service 3 | | 3 | Asset 3 | | 2 | 2 |
+-------------------+ +-------------------+ | 2 | 3 |
+---------------------+

所以我有这些表。我想要获取不在 AssetService 上的 Services,其中 AssetId = 1像这样:

+-------------------+
| Service |
| Id | Name |
+-------------------+
| 3 | Service 3 |
+-------------------+

仅通过内/左/右连接可以实现这一点吗?因为我已经尝试了不同的内部联接组合,但它不起作用,例如 inner join Asset a on a.Id != as.AssetId。我的事件尝试了左连接和右连接。

有人可以帮助我吗?

谢谢。

最佳答案

您可以使用智能左连接仅从左表(服务)返回不匹配的行

SELECT S.Id, S.Name FROM [Service] S
LEFT JOIN ServiceAsset SA
ON S.Id = SA.ServiceId
WHERE SA.ServiceId IS NULL

enter image description here

注意: INNER JOIN 返回匹配的行,而您想要非匹配的行,则使用 LEFT JOIN 代替

关于SQL Server 连接其他表中不存在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48646568/

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