0

誰かがテーブルからユニークな都市/州のコンボを選択する方法を教えてもらえますか?で個別の値を選択できることを理解しています

SELECT DISTINCT city, state
FROM table

しかし、私はユニークな組み合わせを選択する必要があります。つまり、別のエントリと同じ都市/州の値を持たないコンボを選択する必要があります。私が言えることから、これらは異なります。

私がやろうとしているのは、それらの一意の値を取得し、ベンダーの名前とともに都市/州の組み合わせをリストすることです。これが私がこれまでに持っているものです:

SELECT v.vendor_name, v2.vendor_state, v2.vendor_city
FROM vendors v JOIN (SELECT DISTINCT vendor_state, vendor_city
                FROM vendors) v2
ON v.vendor_state = v2.vendor_state and v.vendor_city = v2.vendor_city

その結果

VENDOR_NAME                    VENDOR_STATE VENDOR_STATE
--------------------------------------------------------
Reiter's Scientific & Pro Books DC  Washington
Register of Copyrights          DC  Washington
National Information Data Ctr   DC  Washington
Zee Medical Service Co          IA  Washington
Small Press                     MI  Traverse City
Vision Envelope & Printing      CA  Gardena
Enterprise Communications Inc   VA  Mclean
Publishers Weekly               OH  Marion
.
.
.

ご覧のとおり、組み合わせは一意ではありません(ワシントンDCには複数のリストがあります)一度表示される都市/州の組み合わせのみを表示する必要があります

4

1 に答える 1

1

私はあなたが探していると信じています:

SELECT vendor_name, vendor_state, vendor_city
FROM vendors v
WHERE NOT EXISTS
(
    SELECT 1
    FROM vendors v2
    WHERE v2.vendor_id <> v.vendor_id
    AND v2.vendor_state = v.vendor_state
    AND v2.vendor_city = v.vendor_city
)

これにより、一意の {都道府県} を持つベンダーが一覧表示されます。つまり、他のベンダーが同じ {state, city} を共有していないベンダーです。


次の方法でも実行できます。

SELECT v.vendor_name, v.vendor_state, v.vendor_city
FROM vendors v
INNER JOIN
(
    SELECT vendor_state, vendor_id
    FROM vendors
    GROUP BY vendor_state, vendor_id
    HAVING COUNT(1) = 1
) u ON v.vendor_state = u.vendor_state AND v.vendor_city = u.vendor_city
于 2013-02-25T07:25:22.463 に答える