Sqlite where子句在select语句中有多个值

时间:2014-02-11 16:42:30

标签: ios objective-c database sqlite

我正在尝试一个sqlite select查询语句,如下所示:

SELECT IndicatorText 
FROM Table 
where IndicatorID in('13','25','64','52','13','25','328')
      AND RubricID in('1','1','1','1','1','1','6')

这会给出输出,但不会显示重复值。我想显示IndicatorText的所有值,即使它是重复的。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

单独评估两个IN条件。

要一次检查这两个值,您可以将它们连接起来,以便您有一个要比较的字符串:

SELECT IndicatorText
FROM MyTable
WHERE IndicatorID || ',' || RubricID IN (
        '13,1', '25,1', '64,1', '52,1', '13,1', '25,1', '328,6')

但是,对列值执行此操作会阻止查询优化器使用索引,因此如果表很大,此查询将会很慢。 要允许优化,请创建具有所需值的临时表,并将其与原始表连接:

SELECT IndicatorText
FROM MyTable
NATURAL JOIN (SELECT 13 AS IndicatorID, 1 AS RubricID UNION ALL
              SELECT 25,                1             UNION ALL
              SELECT 64,                1             UNION ALL
              SELECT 52,                1             UNION ALL
              SELECT 13,                1             UNION ALL
              SELECT 25,                1             UNION ALL
              SELECT 328,               6)