在其中一个字段中有多个值的情况下选择记录
问题描述:
是否有人可以帮我缩小我的结果? 三个表设施,样本,位置。使用下面的代码,我可以得到预期的结果,但我只想显示矩阵代码具有多于一个结果(> 1)的记录。在下面的示例中,我只想显示位置代码0689.在其中一个字段中有多个值的情况下选择记录
SELECT DISTINCT f.facility_code,
l.sys_loc_code,
l.loc_type,
s.matrix_code
FROM dt_sample s join dt_location l on l.facility_id = s.facility_id AND l.sys_loc_code = s.sys_loc_code
JOIN dt_facility f on f.facility_id = l.facility_id
WHERE l.loc_type ='TS'
GROUP BY f.facility_code, l.sys_loc_code, l.loc_type, s.matrix_code
HAVING COUNT(s.matrix_code)>1
ORDER BY f.facility_code, l.sys_loc_code, s.matrix_code
facility_code sys_loc_code loc_type matrix_code
DUR03 0687 TS WATER
DUR03 0688 TS WATER
DUR03 0689 TS SEDIMENT
DUR03 0689 TS SW
DUR03 0689 TS WATER
感谢您的帮助。
答
一个使用exists()
,以检查是否存在一个给定的facility_id
和sys_loc_code
不同matrix_code
选项:
select distinct
f.facility_code
, l.sys_loc_code
, l.loc_type
, s.matrix_code
from dt_sample s
inner join dt_location l
on l.facility_id = s.facility_id
and l.sys_loc_code = s.sys_loc_code
inner join dt_facility f
on f.facility_id = l.facility_id
where l.loc_type = 'TS'
and exists (
select 1
from dt_sample i
where i.facility_id = s.facility_id
and i.sys_loc_code = s.sys_loc_code
and i.matrix_code <> s.matrix_code
)
order by
f.facility_code
, l.sys_loc_code
, s.matrix_code
我从来没有用过存在()前。正是我所需要的。谢谢。 –
@SWalden乐意帮忙! – SqlZim