【发布时间】:2014-09-16 19:28:30
【问题描述】:
我有一个从表中选择员工的查询。
该表是一个历史表,因此它可以包含同一个人的记录。始终相同的一条数据是A.[qid]。员工姓名可能会更改,因此它会插入另一条记录更改。
我正在尝试为员工选择最近的记录,这就是我通过A.[Meta_LogDate] 订购的原因。但是,我只想包含员工的 1 条记录,而不是全部记录。
当我搜索时,我希望它给我这个表中最近的记录。
我认为我做不到Top,因为这是一个 ajax 调用,它会在您键入时缩小员工范围,所以我需要确保列表仍然显示所有可能的选项,而不是重复。
SELECT DISTINCT(A.[qid]),
A.[FirstName],
A.[LastName],
A.[ntid],
A.[Meta_LogDate]
FROM EmpTable_historical AS A
WHERE A.[LastName] + ', ' + A.[FirstName] LIKE '%' + @name + '%'
ORDER BY A.[LastName], A.[Meta_LogDate] DESC
FOR XML PATH ('emp'), TYPE, ELEMENTS, ROOT ('results');
【问题讨论】:
-
我认为您的问题与我的类似:stackoverflow.com/questions/25855021/…
-
如果您将其用于自动完成字段,则查询历史数据库并在每次击键时进行过滤和排序会大大降低性能。最好有一个“实时”或“当前”表,并且可能还有一个 FREETEXT 索引以提供更有效的文本匹配。
标签: sql-server tsql stored-procedures