如何在SQLite中重复结果行?

时间:2017-08-21 03:06:25

标签: php sqlite

我将此查询发送到我的数据库:

SELECT ID,text from myTable WHERE id IN (2,3,4,4,5)

我希望多次获得一些行,但它会返回一次。 例如,我想得到"第4行和第34行;多次,当我发送此查询时:

SELECT ID,text from myTable WHERE id IN (1,4,4,4,4,4,5)

它只返回第4行。

我知道我可以这样做:

SELECT ID,text from myTable WHERE id=1
UNION ALL
SELECT ID,text from myTable WHERE id=4
UNION ALL
SELECT ID,text from myTable WHERE id=4
UNION ALL
SELECT ID,text from myTable WHERE id=4
UNION ALL
SELECT ID,text from myTable WHERE id=4
UNION ALL
SELECT ID,text from myTable WHERE id=4
UNION ALL
SELECT ID,text from myTable WHERE id=5

它正在工作,但它会发送许多" select"请求数据库,我正在寻找最快的方法。 有没有更好的方法存在?哪个方式更好&快点? 我知道我可以使用数组在sql之外做,但我正在寻找sql查询方式。

我正在寻找这个结果:

ID     Text
1      test
4      testt
4      testt
4      testt
4      testt
4      testt
5      testtt

1 个答案:

答案 0 :(得分:1)

IN运算符只检查左侧的值是否与右侧的某个值匹配。 要返回多行,您必须使用多个SELECT,或者创建一个临时表,其中值4出现在多行中:

WITH IDs_to_search(ID) AS (
    VALUES (2), (3), (4), (4), (5)
)
SELECT ID, text
FROM MyTable
JOIN IDs_to_search USING (ID);