使用LIKE组合过滤结果的方法

时间:2012-04-05 18:17:46

标签: sql sql-server

我和人和一些电子代码之间有很多关系。带代码的表格包含代码本身,以及代码的文本描述。查询的典型结果集可能是(有许多代码包含“已损坏”,因此我觉得搜索文本描述更好,而不是为每个代码添加一堆OR。)

id#    text of code
1234   broken laptop
1234   broken mouse

目前,获取此类结果集的最佳方法是使用LIKE%broken%过滤器。在不更改文本描述的情况下,有什么方法可以只返回broken的一个代码实例吗?因此,在上面的示例中,查询将仅返回1234并且损坏鼠标或损坏的笔记本电脑。在这种情况下,返回哪个并不重要,我正在寻找的是在该人的代码的任何文本描述中存在“破损”。

我目前的解决方案是创建一个返回的视图

`id#    text of code
1234   broken laptop
1234   broken mouse`

并在查询视图时使用SELECT DISTINCT ID#只获取每个视图的一个实例。

编辑实际查询

SELECT tblVisits.kha_id, tblICD.descrip, min(tblICD.Descrip) as expr1 FROM tblVisits inner join icd_jxn on tblVisits.kha_id = icd_jxn.kha)id inner join tblICD.icd_fk=tblICD.ICD_ID group by tblVisits.kha_id, tblicd.descrip having (tblICD.descrip like n'%broken%')

1 个答案:

答案 0 :(得分:2)

您可以使用以下查询来选择MIN代码。这将确保每个id只有文本。

SELECT t.id, MIN(t.textofcode) as textofcode
FROM table t
WHERE t.textofcode LIKE '%broken%'
GROUP BY t.id

更新了实际查询:

SELECT tblVisits.kha_id, 
  MIN(tblICD.Descrip) 
FROM tblVisits 
INNER JOIN icd_jxn ON tblVisits.kha_id = icd_jxn.kha)id 
INNER JOIN tblicd ON icd_jxn.icd_fk = tbl.icd_id
WHERE tblICD.descrip like n'%broken%'
GROUP BY tblVisits.kha_id