0

私は2つのテーブルを持っています。A と B. B にレコードが存在するかどうかに関して true または false を返す列を選択クエリに追加する方法を見つけようとしています。

Table A
ID     Title
1      A
2      B
3      C
4      D
5      E

Table B
ID     Detail
3      foo
4      foo
4      bar
4      barfood

基本的には「SELECT ID, Title, (Exists?) FROM A」で返したい

ID     Title     Exists
1      A         False
2      B         False
3      C         True
4      D         True
5      E         False

テーブル A の ID 列は常に一意です。テーブル B の ID 列には、テーブル A の ID に関連する 0 個、1 個、または多数の値を含めることができます。テーブル B の詳細は気にしません。テーブル B に、テーブル A の ID に関連するレコードが少なくとも 1 つあるかどうかを知りたいだけです。

私はSQLが初めてで、「存在する場合」を使用する方法またはこれを解析する他の方法を探していましたが、探しているものが実際には見つかりません。

4

3 に答える 3

1

「Exists」という名前の列を一時的に追加する場合は、これを試してください

select a.id, a.title,case when a.id=b.id then 'True' else 'False' end as Exists       
from A a left outer join B b
on a.id = b.id

Exists 列をテーブルに既に追加している場合は、

select a.id, a.title,Exists=(case when a.id=b.id then 'True' else 'False')      
from A a left outer join B b
on a.id = b.id
于 2013-08-02T15:56:47.773 に答える
1

おそらくもっと効率的な方法がありますが、count ステートメントと case ステートメントを組み合わせるとうまくいきます。

select ID, Title, 
case when 
    (select count(1) from B where ID = A.ID) = 0 then 'False'
else 'True'
end as 'Exists'
from A

SQLFiddle リンク

于 2013-08-02T15:57:56.970 に答える
0

テーブルBに参加した場合、その情報が得られます

select a.id, a.title, 
case 
  when b.id is null then 'false'
  else 'true'
end
from a
left outer join b on a.id = b.id
group by a.id, a.title
于 2013-08-02T15:53:16.060 に答える