Entity SQL Language 三 Where/Exists/In/Like/参数及外键查询

简介: 上文写了关于Where及Select的基本操作,这一篇讲一下Where的进阶操作 先说一下查看所生成的SQL的方法,.ToTraceString() 例如: string entitySQL = "select value a from orders as a;";var query = db.CreateQuery(entitySQL);Console.WriteLine(query.ToTraceString()); 参数 参数可以通过CreateQuery的第二个参数传递进去。

上文写了关于Where及Select的基本操作,这一篇讲一下Where的进阶操作

先说一下查看所生成的SQL的方法,.ToTraceString()
例如:

string entitySQL = "select value a from orders as a;";
var query = db.CreateQuery<Orders>(entitySQL);
Console.WriteLine(query.ToTraceString());

参数

参数可以通过CreateQuery的第二个参数传递进去。

DateTime dt = new DateTime(1997, 1, 1);
ObjectParameter[] ps = { new ObjectParameter("dt", dt) };
ObjectQuery<Orders> query = db.CreateQuery<Orders>("SELECT VALUE Orders FROM Orders WHERE Orders.OrderDate < @dt;", ps);

这里通过@dt将参数传了进去,执行结果:

image

外键关系

Entity SQL与其它的查询一样,可以通过外键的关系直接取值或判断,如:

ObjectQuery<Orders> query = db.CreateQuery<Orders>(
"SELECT VALUE o FROM Orders AS o WHERE o.Customers.Country = 'Mexico';");

 

我们直接用o.Customers.Country这是一个一对多的外键关系。

image

多条件查询

与T-SQL相同,只要用相应的逻辑关键字即可。如:

string entitySQL = 
"SELECT VALUE p FROM Products AS p WHERE p.UnitsInStock < p.ReorderLevel and p.UnitsOnOrder = 0;";
ObjectQuery<Products> query = db.CreateQuery<Products>(entitySQL);

Exists查询

做为Where的一个经常用的谓词,Exists的使用方法如下:

string entitySQL = @"SELECT VALUE s FROM Suppliers AS s WHERE 
EXISTS(SELECT p FROM s.Products AS p WHERE p.UnitsInStock = 0);
";
var query = db.CreateQuery<bool>(entitySQL);

运行后生成的SQL如下:

SELECT
[Extent1].[Address] AS [Address],
[Extent1].[City] AS [City],
[Extent1].[CompanyName] AS [CompanyName],
[Extent1].[ContactName] AS [ContactName],
[Extent1].[ContactTitle] AS [ContactTitle],
[Extent1].[Country] AS [Country],
[Extent1].[Fax] AS [Fax],
[Extent1].[HomePage] AS [HomePage],
[Extent1].[Phone] AS [Phone],
[Extent1].[PostalCode] AS [PostalCode],
[Extent1].[Region] AS [Region],
[Extent1].[SupplierID] AS [SupplierID]
FROM [dbo].[Suppliers] AS [Extent1]
WHERE EXISTS (SELECT
cast(1 as bit) AS [C1]
FROM [dbo].[Products] AS [Extent2]
WHERE ([Extent1].[SupplierID] = [Extent2].[SupplierID]) AND ([Extent2].[
UnitsInStock] = 0)
)

IN查询

In查询当然也是不可少的。使用方法如下:

string entitySQL =
@"SELECT VALUE c FROM Customers AS c WHERE c.City in {'Seattle','harbin'}";
var query = db.CreateQuery<Orders>(entitySQL);

LIKE查询

like做为一个模糊查询的关键字是一定要支持的。

string entitySQL =
@"SELECT VALUE c FROM Customers AS c WHERE c.City like '%at%';";
var query = db.CreateQuery<Orders>(entitySQL);

Between、And查询

string entitySQL =@"SELECT VALUE c FROM Customers AS c WHERE c.ID between 1 and 100";
var query = db.CreateQuery<Orders>(entitySQL);
目录
打赏
0
0
0
0
1
分享
相关文章
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
18 1
|
2月前
|
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
54 17
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
SQL做数据分析的困境,查询语言无法回答的真相
SQL 在简单数据分析任务中表现良好,但面对复杂需求时显得力不从心。例如,统计新用户第二天的留存率或连续活跃用户的计算,SQL 需要嵌套子查询和复杂关联,代码冗长难懂。Python 虽更灵活,但仍需变通思路,复杂度较高。相比之下,SPL(Structured Process Language)语法简洁、支持有序计算和分组子集保留,具备强大的交互性和调试功能,适合处理复杂的深度数据分析任务。SPL 已开源免费,是数据分析师的更好选择。
SQL查询效率介绍及9个注意事项
原文 http://blog.csdn.net/guoxuepeng123/article/details/8604715 一、查询条件精确,针对有参数传入情况 二、SQL逻辑执行顺序   FROM-->JOIN-->WHERE-->GROUP-->HAVING-->DISTINCT-->...
1209 0

热门文章

最新文章