[英]SQL query to only return the rows that have the highest value in a certain column
[英]SQL - return rows that do not have a certain value
在可能的情况下在这里寻求帮助?
我有以下查询:
在或数据库上,我们有一个名为Linkfile的表,该表中的“类型”均以“ YG”开头。 我需要返回那些不具有“ YG8”类型但似乎无法执行的行。 我知道我需要使用子查询,但是卡住了!
这是我的代码以及需要返回的字段。 我只需要显示那些没有lk.type为“ YG8”的文件
select distinct l.description, p.displayname AS Temp, p.compliance_status As 'Compliant', lk.displayname, lk.type
from event e
inner join organisation o on e.organisation_ref = o.organisation_ref
inner join opportunity opp on e.opportunity_ref = opp.opportunity_ref
inner join event_role ev on ev.event_ref = e.event_ref
inner join address a on a.address_ref = opp.address_ref
inner join person p on ev.person_ref = p.person_ref
inner join lookup l on p.responsible_team = l.code
inner join person_type pt on p.person_ref = pt.person_ref
inner join linkfile lk on lk.parent_object_ref = pt.person_ref
where o.displayname LIKE '%G4S%' and p.compliance_category = '$016'
and lk.type like 'YG%' and l.code_type = '2'
and a.displayname LIKE '%MOJ%'
and pt.status = 'A'
order by l.description, p.displayname, lk.type
使用以下查询:
select distinct l.description, p.displayname AS Temp, p.compliance_status As 'Compliant', lk.displayname, lk.type,lk.parent_object_ref
from event e
inner join organisation o on e.organisation_ref = o.organisation_ref
inner join opportunity opp on e.opportunity_ref = opp.opportunity_ref
inner join event_role ev on ev.event_ref = e.event_ref
inner join address a on a.address_ref = opp.address_ref
inner join person p on ev.person_ref = p.person_ref
inner join lookup l on p.responsible_team = l.code
inner join person_type pt on p.person_ref = pt.person_ref
left join (select displayname, type,parent_object_ref from linkfile where lk.type like 'YG8%' )lk on lk.parent_object_ref = pt.person_ref
where o.displayname LIKE '%G4S%' and p.compliance_category = '$016' and lk.parent_object_ref is null
and l.code_type = '2'
and a.displayname LIKE '%MOJ%'
and pt.status = 'A'
order by l.description, p.displayname, lk.type;
我在链接文件上使用了“ YG8%”类型的左联接,并仅获取了不匹配的记录
我认为您可以更换
lk.type like 'YG%'
具有以下内容:
(lk.type >= 'YG' and lk.type <'YG8') or (lk.type > 'YG8' and lk.type <='YGZ')
这应该可以完成您要尝试执行的操作,还可以避免使用效率较低的“ like”(至少假设您在lk.type上具有索引)。
您可以通过了解哪些当然是lk.type的可能值来对此进行细化。 即YG“子类型”的极端情况是什么? YG00-YG99? YG-YGZ?
(例如,如果您可能拥有YG81或YG87,请格外小心,因为这样我的子句将无法正常工作...另一方面,如果您的YG子类型可以具有类似YG34的值,则最好使用YG08而不是YG8)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.