IDのリストがあり、IDを持つユーザーがDBにあるかどうかを1つのSELECTで確認する必要があります。SELECT WHERE IN () のように。しかし、 SELECT WHERE IN () は私のニーズに合わないので、1 つの SELECT で、複数の SELECT のようなループを使用せずに、テーブルにある ID とそうでない ID を区別する必要があります。どんなアイデアでも大歓迎です!
2 に答える
0
これが必要かどうかはわかりませんが、多くの ID を含むテーブル 1 があり、テーブル 2 に含まれる ID とそうでない ID を確認したいと思いますか?
select T1.ID, count(*) 'Times of occurrences in T2'
from table 1 T1
left outer join table 2 T2
ON T1.ID = T2.ID
group by T1.ID
于 2013-09-13T11:32:58.390 に答える
0
詳細を提供する必要があります。リストをクエリにハードコーディングできるように単一のクエリにするか、提供されたIDのリストの一般的な解決策を見つけたいですか? あなたのリストはどれくらいですか?
単一のクエリでリストがそれほど長くない場合は、ユニオンを使用できます。例:
SELECT some_value, EXISTS( SELECT 1 FROM tableName WHERE user_id = some_value )
UNION ALL
SELECT other_value, EXISTS( SELECT 1 FROM tableName WHERE user_id = other_value )
UNION ALL
SELECT other_value2, EXISTS( SELECT 1 FROM tableName WHERE user_id = other_value2 )
UNION ALL
.....
ID のリストが異なる可能性がある場合、および/または何千ものレコードで構成されている場合、それは不可能です。リストには列レイアウトがあり、それを行レベルの結果に変更したいと考えています。MsSQL には、それを実行できる PIVOT 句と UNPIVOT 句があります。MySQL では、明示的な共用体を使用しないこのような変換は不可能です。
于 2013-09-13T12:58:50.387 に答える