如何使用Linq to Entities查询同一张表中的存在和不存在

破裂的玉米吉米

我有一个表,其中包含与这些部分关联的 PartIds 和 AccountIds 列表。在该表中,有一个布尔值用于确定 PartId/AccountId 配对是否是专属俱乐部 (IsInExclusiveClub) 的成员。

我想查询该表以查找属于专属俱乐部和不属于专属俱乐部的不同 PartId/AccountId 配对。

以下是我为此编写的两个 SQL 查询:

加入专属俱乐部:

DECLARE                           @ForeignPassedInKey int; set @ForeignPassedInKey = [Some Integer]

SELECT                     DISTINCT p.PartId
FROM                       dbo.Part p
WHERE                      IsInExclusiveClub = 1
AND                        EXISTS(SELECT * FROM dbo.Parts p2 
                                  WHERE p.partid = p2.partid 
                                  AND p2.Account IN (SELECT AccountId FROM dbo.Accounts
                                                               WHERE ForeignPassedInKey = @ForeignPassedInKey)
                                  AND p2.IsInExclusiveClub = 1)

被排除在专属俱乐部之外:

DECLARE                           @ForeignPassedInKey int; set @ForeignPassedInKey = [Some Integer]

SELECT                     DISTINCT p.PartId
FROM                       dbo.Part p
WHERE                      IsInExclusiveClub = 1
AND                        NOT EXISTS(SELECT * FROM dbo.Parts p2 
                                  WHERE p.partid = p2.partid 
                                  AND p2.Account IN (SELECT AccountId FROM dbo.Accounts
                                                               WHERE ForeignPassedInKey = @ForeignPassedInKey)
                                  AND p2.IsInExclusiveClub = 1)

我将如何使用 Linq to Entities 编写它。另外,如果您需要更多信息,请告诉我。

乔什·纳克

这样做可以简化您的查询:

SELECT                  DISTINCT p.PartId
FROM                    dbo.Part p
WHERE                   IsInExclusiveClub = 1
AND                     Account IN (SELECT AccountId FROM dbo.Accounts WHERE ForeignPassedInKey = @ForeignPassedInKey)

对于 NOT EXISTS 查询,您可以将其更改为“Account NOT IN”。

对此的 Linq 查询可能如下所示:

var accounts = db.Accounts
                .Where(account => account.ForeignPassedInKey = ForeignPassedInKey)
                .Select(account => account.AccountId);
var parts = db.Parts
                .Where(part => part.IsInExclusiveClub = 1 && accounts.Contains(part.AccountId))
                .Select(part => partId).Distinct();

然后 !accounts.Contains(part.AccountID) 对于 NOT EXISTS

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL如何使用datediff排除数据并在同一表中不存在

如何从同一张表中查询同一列但条件不同的两个不同的总和?

Mysql如何从同一张表的单个查询中获取2组结果?

如何通过口才查询生成器在与同一张表的关系上使用whereHas?

使用LINQ语法的SQL查询不存在并联接

如何比较同一张表中的记录列?

如何在MySQL查询中不存在或不存在内部联接?

如果使用命令行或sql在大查询中不存在,如何创建表

我该使用哪个SQL Join来查看同一表的集合中不存在的一个表的结果?

使用group by查询同一张表中的同一列两次

如何子查询同一张表

如何使用in进行子查询将表中不存在的值计数为0

当多个实体从一个公共实体派生并保存在同一张表中时,如何按实体查询对象

SQL Server:从同一张表和另一张表中获取日期时,使用其他方法代替并集

Tableau中存在和不存在的使用方法

MySQL列值在同一张表的其他列中不存在

如何在Oracle SQL中的同一张表上查找和过滤数据

MySQL:如何仅使用一个查询获取表中不存在的ID的百分比

MySQL:如何在单个查询的同一张表中进行选择和删除?

Linq查询-不存在语句

使用Linq确定记录在列表中是否不存在但在表中是否存在

如何比较同一张表中的值

如何在一个SELECT查询中区分“不存在子行”和“不存在父行”?

使用一张表中的数据查询另一张表

mysql:如何查询一张表中的比例

如果MYSQL中不存在两个值,则插入记录(同一张表)

如果文件夹不存在,如何检查和创建文件夹?以及如何使每次按 K 键时都会截取一张屏幕截图?

从 WHERE 中使用的同一张表中删除

如何从 django 的同一张表中制作 foreignKey?