2017-01-24 18 views
0

guidとuuidを内部テーブルに表示することを選択しますが、SQL Server 2016では次の構文は使用できません。テーブル内で複数の列を選択

select * 
from myTable 
where (guid, uuid) in (select max(guid) as maxguid, convert(nvarchar(max), uuid) as uuid 
         from myTable 
         group by convert(nvarchar(max), uuid) 
        ) 

私はSQL WHERE.. IN clause multiple columnsのような他の回答を見てきました。しかし、私は私の内部表にGROUP BYステートメントを持って、それらを使用する方法がわかりません。

+0

は、なぜあなたは '行わない複数の列のために存在します'guid'で' max'を実行しますか?私はGUIDが文字列だと思います。ここにDISTINCTしますか? myTableに複数の一致がある場合は、それらをすべて選択しますか? – qxg

答えて

1

の線に沿って内側のサブクエリでグループ分けを入れて使用することは

select * from myTable 
where exists 
(select 1 
from (select max(guid) as maxguid, convert(nvarchar(max), uuid) as uuid 
     from myTable 
     group by convert(nvarchar(max), uuid)) innerTable 
where myTable.guid = innerTable.maxguid 
and myTable.uuid = innerTable.uuid) 
0

あなたは、サブクエリを使用することができますし、参加 - 何かを

select 
    myTable.* 
from 
    myTable join 
    ( 
    select 
     max(guid) as maxguid, 
     convert(nvarchar(max), uuid) as uuid 
    from 
     myTable 
    group by 
     convert(nvarchar(max), uuid) 
) x 
    on 
    x.maxguid = myTable.guid and 
    x.uuid = myTable.uuid 
関連する問題