私は、UNIONを使用して同じフィールドで2つのクエリをフェッチしようとしています。私が必要とするのは、重複した行が削除されるということですが、重複した行は削除されません。両方のクエリには、Country、Idcustomer、Type、およびCostが含まれています。私は例を示して下:フェッチ後UNIONで重複した行を削除する
Country | Idcustomer | Type | Cost
Brazil 123 1 3,2
Brazil 212 1 4,1
Country | Idcustomer | Type | Cost
Brazil 123 2 5,5
Brazil 212 2 4,3
Brazil 543 2 4,2
を、私は必要なものIdcustomerは、両方のクエリーにある場合、最初のものをpriorizeをということです。私はUNIONが重複した値を取り除くので、それを解決しようとしていたと思った。
Country | Idcustomer | Type | Cost
Brazil 123 1 3,2
Brazil 212 1 4,1
Brazil 543 2 4,2
どうもありがとう!
SELECT A.*
FROM (
SELECT Country, Idcustomer, type, cost
FROM qry_cost
WHERE type = 1
) AS A,
(
SELECT qry_cost.Idcustomer, MIN(qry_cost.cost) AS cost_min
FROM qry_cost
WHERE type = 1
GROUP BY qry_cost.Idcustomer
) AS B
WHERE A.Idcustomer = B.Idcustomer
AND A.cost = B.cost
UNION
SELECT A.*
FROM (
SELECT Country, Idcustomer, type, cost
FROM qry_cost
WHERE type = 2
) AS A,
(
SELECT qry_cost.Idcustomer, MIN(qry_cost.cost) AS cost_min
FROM qry_cost
WHERE type = 2
GROUP BY qry_cost.Idcustomer
) AS B
WHERE A.Idcustomer = B.Idcustomer
AND A.cost = B.cost;
あなたもあなたの質問を投稿できますか? –
データに重複した行が含まれていません。 "フェッチした後、Idcustomerが両方のクエリを実行している場合、最初のものを優先させます.Unionは" ...いいえ。それは「組合」の仕組みではありません。まったく。 –
SELECT A. * FROM qry_cost WHERE type = 1 SELECT qry_cost.Idcustomer、MIN(qry_cost.cost)AS cost_min qry_cost WHERE type = 1 GROUP BY qry_cost.Idcustomer )AS B WHERE A.Idcustomer = B.IdcustomerとA.cost = B.cost UNION SELECT A. * FROM(SELECT国、Idcustomer、タイプ、コスト、qry_cost where type = 2)AS A、(SELECT qry_cost。 IDCustomer、MIN(qry_cost.cost)AS cost_min qry_cost where type = 2 GROUP BY qry_cost.Idcustomer)AS B WHERE A.Idcustomer = B.Idcustomer AND A.cost = B.cost; –