非常に複雑な動的SQLを作成しています。ユーザーごとに1行を返す必要がありますが、1対多のテーブルに対して結合する必要があります。少なくとも1つの行が返されることを確認するために外部結合を実行します(そして、そのテーブルにデータがあるかどうかを確認するためにnullをチェックできます)が、複数ある場合は、この外部結合部分から1行だけ戻るようにする必要がありますこのユーザーのこの2番目のテーブルの行。これまでのところ、私はこれを思いついた:( sybase)
SELECT a.user_id
FROM table1 a
,table2 b
WHERE a.user_id = b.user_id
AND a.sub_id = (
SELECT min(c.sub_id)
FROM table2 c
WHERE b.sub_id = c.sub_id
)
サブクエリは、その特定のユーザーの1対多のテーブルで最小値を検索します。
これは機能しますが、表1と表2が非常に大きくなると、相関サブクエリを実行することによる不快感を恐れます。もっと良い方法はありますか?私はそれを行うために参加する方法を夢見ようとしていますが、私はそれを見ていません。また、「where rowcount = 1」または「top1」と言っても役に立ちません。上記のクエリを修正しようとしているのではないため、すでに複雑なクエリに上記を追加しています。