2017-08-21 53 views
1

我送此查詢到我的分貝:如何在SQLite中重複結果行?

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 
+0

這裏看看:https://dba.stackexchange.com/questions/45512/how-do-i-select-items-from-a-table-where-a-single-column-must-contain-two-or-mo – BlooB

+0

[定義與IN運算符一起使用的變量(T-SQL )](https://stackoverflow.com/questions/1707326/define-variable-to-use-with-in-operator-t-sql) – BlooB

+0

不,它是不同的。我編輯了我的問題。 –

回答

1

IN操作符只檢查左側的值是否在正確的一些值相匹配。 要返回多行,你必須要麼使用多個查詢,或者創造一個價值4出現在多個行的臨時表:

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

謝謝,它比多個SELECT更快。 –