从sqlite中的公共字段中选择数据库表中的行

时间:2013-01-14 13:05:28

标签: sql sqlite

我有一张表格如下:

create table table1(id integer,firstname text,lastname text);

名字姓氏

======== =========
1本泰勒 2抢泰勒 3抢劫史密斯 4抢僵尸
5彼得史密斯 6本史密斯 7彼得·泰勒

我想选择带有姓氏的行,其中姓氏必须由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这加入了所有结果行,这不是我想要的。

2 个答案:

答案 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')

Live example at SQL Fiddle.

答案 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'))