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(所有字段但這兩個)'試試看看它是否有效 –