我有一张表格如下:
create table table1(id integer,firstname text,lastname text);
我想选择带有姓氏的行,其中姓氏必须由ben和rob共享,而firstnames必须是ben和rob。
因此,在上表中,选择查询的结果必须是:
1本泰勒
2抢泰勒
3抢劫史密斯
6本史密斯
获取上述结果的sql查询必须是什么?
我试过 - select * from table1 as a,table1 as b where a.firstname='ben' and b.firstname='rob' and a.lastname=b.lastname
这加入了所有结果行,这不是我想要的。
答案 0 :(得分:1)
您可以使用两个过滤联接来要求与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')
答案 1 :(得分: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'))