1

私は次のようなテーブルを持っています:

テーブル table1 を作成します (id 整数、名のテキスト、姓のテキスト);

名前苗字

======== =========
1 ベン・テイラー
2 ロブ・テイラー
3 ロブ・スミス
4 ロブ・ゾンビ
5 ピーター・スミス
6 ベン・スミス
7 ピーター・テイラー

lastname で行を選択したいのですが、姓は ben と rob が共有し、firstname は ben と rob でなければなりません。
したがって、上記の表では、select クエリの結果は次のようになります。
1 ben taylor
2 rob taylor
3 rob smith
6 ben smith

上記の結果を得るために必要な SQL クエリは何ですか?
私は試しました- select * from table1 as a,table1 as b where a.firstname='ben' and b.firstname='rob' and a.lastname=b.lastnameこれは、意図したものではない結果のすべての行を結合しました。

4

2 に答える 2

1

2 つのフィルタリング結合を使用して、姓が Ben と Rob の両方と共有されることを要求できます。

select  *
from    Table1 t1
join    Table1 rob
on      rob.firstname = 'rob'
        and t1.lastname = rob.lastname
join    Table1 ben
on      ben.firstname = 'ben'
        and t1.lastname = ben.lastname
where   t1.firstname in ('ben', 'rob')

SQL Fiddle での実例。

于 2013-01-14T13:16:48.993 に答える
0
select * 
from table1 where first_name = 'ben' or first_name = 'rob' 
and last_name 
in (select last_name from table1 where first_name = 'rob' and last_name 
in (select last_name from table1 where first_name = 'ben'))
于 2013-01-14T13:20:10.127 に答える