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

テーブルから一意の値を選択するにはどうすればよいですか?

    このクエリは 一意のstatus_idを返しますが、これらのstatus_idと他の各フィールドの組み合わせも一意である場合に限ります。一意のstatus_idを選択できますが、status_idごとに複数の組み合わせがある場合、他のフィールドのすべての値を返すことはできません。

    [編集]

    各ステータスの最初のレコードのみが必要な場合:

    select 
      status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
    from
      (select 
        row_number() over (partition by status_id order by 1) as number, 
        status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
      FROM ordertest)
    where
      number = 1
    

    row_numberの代わりに 、dense_rank およびrank はさまざまな種類の番号付けにも使用されますが、この場合は実際には1つの行が必要であり、row_numberで十分です。

    order byがわからない 必須です。そうでない場合は、省略できます。そうである場合は、ダミー値を指定するか、「最初の行」として使用する特定のフィールドを指定できます。たとえば、order by schedule_idを高速化します。 各status_idの最小のschedule_idを返します。



    1. MySQLレプリケーションが遅れている場合の注意点

    2. DBスキーマの変更を追跡するためのメカニズム

    3. コマンドラインで実行したときにmysqlのドル記号をエスケープするにはどうすればよいですか?

    4. system() は、Oracle にログインすると -1、errno=10 を返します。