sql >> データベース >  >> RDS >> Oracle

BLOBを除くすべてのフィールドでSELECTDISTINCTを実行するにはどうすればよいですか?

    SELECT DISTINCT MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS
    FROM [...]
    

    識別は、SELECTリストのすべての列に適用されます。はい、OracleはさまざまなLOBを比較する方法を知らないため、GROUP BY、UNION、DISTINCTなどでLOBを使用することはできません。

    BLOBも取得したい場合は、次のようにしてみてください。

    SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
           PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE
    FROM (     
      SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
             PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE,
             row_number() over (partition by MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS 
                                order by PROJECTION.DAY, TIME_SLOTS.SLOT) RW
      FROM [...]
    ) WHERE RW = 1;  
    

    しかし、あなたはあなたが探しているものを理解する必要があります。たとえば、上記のクエリは、BLOB列を除くすべての列をグループ化し、それらを2列ずつ並べて、グループ内の各行に行番号を割り当てます。結果のクエリは、各グループの最初の行のみを取得します




    1. Microsoft SQLServer2000でMySQLLIMIT句をエミュレートする

    2. VBAのDefTypeステートメント:下位互換性のダークサイド

    3. SQL CREATE TABLE構文–DBMSによってリストされます

    4. smallint []列のGINインデックスが使用されていないか、エラー演算子が一意ではありません