有没有办法选择SQL中的对列表中的行?

时间:2012-01-11 19:26:17

标签: sql sqlite

我有一个表FOO,其定义如下:


id   INTEGER,
type INTEGER,
data VARCHAR(32),
PRIMARY KEY(id, type)

我得到了一对对象列表:(id,type)我希望获得与这些对应对应的所有数据(以及id和类型,以便我知道什么属于什么)。我可以在一个查询中执行此操作吗? (我的SQL的特定方言是SQLite)

2 个答案:

答案 0 :(得分:2)

在SQLite中执行此操作的唯一方法是在or子句中执行一堆where语句。或者,你可以这样做:

select
    f1.*
from
    foo f1
    inner join (
        select 'id1' as id, 'type1' as type union all
        select 'id2', 'type2' union all
        select 'id3', 'type3'
    ) f2 on
        f1.id = f2.id
        and f1.type = f2.type

对于启发,where子句方法是:

select
    *
from
    foo
where
    (id = 'id1' and type = 'type1')
    or (id = 'id2' and type = 'type2')
    or (id = 'id3' and type = 'type3')

答案 1 :(得分:0)

如果你有很多对,你也可以有第二张桌子来容纳这对。

select
    foo.*
from
    foo
    inner join pairs
        on foo.id = pairs.id and foo.type = pairs.type