私のテーブルでは、それぞれID
に1つしかないかどうかを知る必要がありID_name
ます。どうすればそのようなクエリを書くことができますか?
私は試した:
select ID, count(distinct ID_name) as count_name
from table
group by ID
having count_name > 1
しかし、実行するには永遠にかかります。
何かご意見は?
私のテーブルでは、それぞれID
に1つしかないかどうかを知る必要がありID_name
ます。どうすればそのようなクエリを書くことができますか?
私は試した:
select ID, count(distinct ID_name) as count_name
from table
group by ID
having count_name > 1
しかし、実行するには永遠にかかります。
何かご意見は?
select ID
from YourTable
group by
ID
having count(distinct ID_name) > 1
また
select *
from YourTable yt1
where exists
(
select *
from YourTable yt2
where yt1.ID = yt2.ID
and yt1.ID_Name <> yt2.ID_Name
)
現在、ほとんどのID
列は一意であると定義されprimary key
ています。したがって、通常のデータベースでは、両方のクエリが空のセットを返すと予想されます。
select tt.ID,max(tt.myRank) from ( select ip.ID,ip.ID_name, ROW_Number() over (partition by ip.ID,ip.ID_nameorder by ip.ID) as myRank from YourTable ip ) tt group by tt.ID
これにより、すべての ID と ID_Name の総数が得られます
複数の名前が関連付けられている ID のみが必要な場合は、where 句を追加するだけです。
select tt.ID,max(tt.myRank) from ( select ip.ID,ip.ID_name, ROW_NUMBER() over (partition by ip.ID,ip.ID_nameorder by ip.ID) as myRank from YourTable ip ) tt where tt .myRank > tt.ID による 1 グループ