【发布时间】:2009-09-01 19:50:41
【问题描述】:
假设员工有三列 名字、姓氏和 ID。
查询应首先在 firstname 中搜索姓名,仅在未找到时搜索姓氏。
所以选择 *from Employee where FirstName = 'test%' or lastname='test'%'。不会工作。
下面的查询将起作用。
select FirstName, LastName, ID
from EMPLOYEE
WHERE
LastName = 'Test%'
AND
(COUNT(SELECT FirstName, LastName, ID FROM EMPLOYEE WHERE FirstName = 'Test%')=0)
OR
SELECT FirstName, LastName, ID FROM EMPLOYEE WHERE FirstName = 'Test%'
我需要将其映射回 NHibernate,有没有一种更快更有效的方法来执行此操作,而不是进行两次数据库调用?
【问题讨论】:
-
我真的认为你不必担心编写两个数据库调用的开销。
-
只要 FirstName 和 LastName 都被索引,几乎任何非愚蠢的查询都会足够高效(除非您的数据库有数百万个条目)。
-
“所以选择 *from Employee where FirstName = 'test%' or Lastname='test'%'. won't work.”如果您在 FirstName 匹配时总是想要记录(无论 LastName 是什么),那么这确实是查询。详情见我的回答。
标签: sql nhibernate