0
我有以下查询,获取不同的值一列
SELECT v.pattern_id,
v.id,
v.pdb_id AS viocardId,
p.pdb_id AS PID,
s.vio_id AS SiVioId,
r.date AS orcdate,
s.created_date AS sivcreateddate,
r.job_id,
r.maskset,
r.device,
d.tech_geometry,
r.layer,
r.layer_rev,
r.ptrf,
r.operation,
Concat_ws('_', d.tech_geometry, r.layer, p.pdb_id) AS techlayer
FROM orc_orcviolation v,
orc_orcpattern p,
siverify_siverifyverificationsite s,
orc_orccheck o,
orc_orcrecord r,
siverify_siverifyverificationdevice d
WHERE v.pattern_id = p.id
AND p.pdb_id = s.pattern_id
AND p.if_target = s.if_target
AND p.if_secure <> 1
AND s.create_status <> 5
AND v.check_id = o.id
AND o.record_id = r.id
AND d.id = s.si_device_id
AND r.maskset <> 'MT23RUN1'
AND r.maskset <> 'M25RUN3'
AND r.ptrf NOT LIKE '%PTRF-20251-%'
AND d.fab LIKE '%FAB 1%'
AND v.id > (SELECT v1.id
FROM orc_orcviolation v1,
orc_orcpattern p1,
siverify_siverifyverificationsite s1,
orc_orccheck o1,
orc_orcrecord r1,
siverify_siverifyverificationdevice d1
WHERE v1.pattern_id = p1.id
AND p1.pdb_id = s1.pattern_id
AND p1.if_target = s1.if_target
AND p1.if_secure <> 1
AND s1.create_status <> 5
AND v1.check_id = o1.id
AND o1.record_id = r1.id
AND d1.id = s1.si_device_id
AND r1.maskset <> 'MT23RUN1'
AND r1.maskset <> 'M25RUN3'
AND r1.ptrf NOT LIKE '%PTRF-20251-%'
AND d1.fab LIKE '%FAB 1%'
AND v1.id = s1.vio_id
AND s1.vio_id = s.vio_id)
AND r.date > s.created_date;
我需要的是,我需要得到不同的值只为列r.job_id。我对上面的查询输出的样子,
pattern_id id viocardId PID SiVioId orcdate sivcreateddate job_id maskset device tech_geometry layer layer_rev ptrf operation techlayer
702627 2038025 8270564 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455
702627 2038027 8270566 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455
702627 2038029 8270568 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455
702627 2112780 8425263 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455
702627 2112783 8425266 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455
702627 2112784 8425267 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455
702627 2240805 8558618 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455
702627 2240807 8558620 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455
在上面的运算,对于PID(4298455),我们可以看到三个job_ids(442896,471956,504071)。我想删除job_ids的重复和理想我OP应该是什么样子,
pattern_id id viocardId PID SiVioId orcdate sivcreateddate job_id maskset device tech_geometry layer layer_rev ptrf operation techlayer
702627 2038025 8270564 4298455 1939970 4/16/2016 12:22 12/23/2015 1:14 442896 MPW2202 MPW2202_TEG1 0.022UM RX AZ PTRF-45862-2896 orc 0.022UM_RX_4298455
702627 2112780 8425263 4298455 1939970 6/12/2016 4:08 12/23/2015 1:14 471956 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AZ PTRF-45862-3249 orc 0.022UM_RX_4298455
702627 2240805 8558618 4298455 1939970 8/27/2016 8:35 12/23/2015 1:14 504071 ECLIPS4 ECLIPS4_SLM11 0.022UM RX AY PTRF-45862-3610 orc 0.022UM_RX_4298455
我不认为创建一个子查询只是r.job_id的不同值会因为它可能会扰乱一个明智的选择查询的其他部分。任何方式来做到这一点?提前致谢。
是从原始数据不同值从一行到另一个唯一的两列是'id'和'viocardId'和您想要的结果,你所得到的两者的值较小,因为所有数据都是相同的,但是这两个可以选择所有字段,并且这两个数据与最小值聚合。例如:'select pattern_id,min(id),min(viocardId),PID,SiVioId ...(所有其他columsn)...(其余所有选择).... group by(所有字段但这两个)'试试看看它是否有效 –