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

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


我想多次获得一些行,但它返回一次。
例如,当我发送以下查询时,我想多次获得“第4行”:

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


它正在工作,但是它向数据库发送了许多“选择”请求,我正在寻找最快的方法。
有更好的方法吗?最好的方法是更快更好?
我知道我可以使用数组在sql之外进行操作,但是我正在寻找sql查询方式。

我正在寻找这个结果:

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

最佳答案

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);

关于php - 如何在SQLite中重复结果行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45788796/

10-10 04:14