我正在尝试一个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的所有值,即使它是重复的。
请帮我解决这个问题。
答案 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)