小编jfe*_*042的帖子

多个LIKE子句SQL

我正在进行一项询问,以显示某些类型药物的患者.我有一份我正在寻找的几种不同药物的清单 - 我正在寻找数据库中是否有任何患者的处方,这些药物在今天或之后的日期或之后结束.

药物按名称出现在表格中,所以我试图找到它们LIKE.但是,一旦我添加了多个med,我的查询就会爆出大量的重复项(从362行返回到超过32K行),并WHERE在meds之后忽略我的子句中的所有项.

所以这就是我尝试过的:

    select p.PatientID, 
    p.FirstName+' '+p.LastName as 'PatientName', 
    m.endDate, 
    m.Prescriber, 
    m.drugDescription as 'DrugName'
    from Medications m
    join Patients p on p.RCDID = m.PTID
    where m.historyRecord = 'N'
    and m.[current] = 'Y'
    and m.drugDescription like 'Med1%'
    or m.drugDescription like 'Med2%'
    or m.drugDescription like 'Med3%'
    and m.endDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)

这给了我超过30K的重复 - 并且重复的患者在该WHERE条款中不符合以下标准:

    where m.historyRecord = 'N'
    and m.[current] = 'Y'        
    and m.endDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)

(而这名患者实际上只出现在21行的数据库中 - 在21次不同的时间内开出Med2 - 所以它完全脱离了轨道)

我也尝试了一个子查询:

    select p.PatientID, 
    p.FirstName+' …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

2
推荐指数
1
解决办法
72
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1