0

特定の値が繰り返される行を特定する必要があります。サンプルテーブルは次のとおりです。

COUNTRY         CITY
Italy           Milan
Englad          London
USA             New York
Canada          London
USA             Atlanta

クエリは...を返します

COUNTRY         CITY
Englad          London
Canada          London

...ロンドンが繰り返されるからです。よろしくお願いいたします。

4

4 に答える 4

4

最も簡単な方法は、各都市が出現する回数をカウントするサブクエリを使用することです (複数回出現する値にフィルターをかけます)。

SELECT * FROM Cities
WHERE City in
(
    SELECT City FROM Cities
    GROUP BY City
    HAVING COUNT(*) > 1
)
于 2013-09-30T21:27:22.020 に答える
2
select country, city 
from aTable
where city in
(
    select city
    from aTable
    group by city
    HAVING count(1) > 1
)

ここで試してみてください: http://sqlfiddle.com/#!3/e9b1a/1

または、同じ都市と国の組み合わせが 2 回表示され、国が異なる場所だけに関心がある場合:

select distinct country, city 
from aTable
where city in
(
    select city
    from aTable
    group by city
    HAVING count(distinct country) > 1
)

ここで試してみてください: http://sqlfiddle.com/#!3/2dfaa/2

于 2013-09-30T21:27:36.280 に答える
2

DBMS がウィンドウ集計をサポートしている場合。

SELECT COUNTRY,
       CITY
FROM   (SELECT COUNTRY,
               CITY,
               COUNT(*) OVER (PARTITION BY CITY) AS Cnt
        FROM   Cities) T
WHERE  Cnt > 1 

SQL フィドル

于 2013-09-30T21:27:47.097 に答える
0

これは機能します。私の妻からそれを手に入れました(彼女はついにこれを調べる時間がありました). あなたが興味を持っているかもしれないと思った。

SELECT * FROM Cities WHERE City in ( select city
from (SELECT City, count(distinct country) FROM Cities
GROUP BY City
HAVING count(distinct country) > 1) a )

于 2013-10-01T18:03:09.273 に答える