2013-11-01 158 views
2

MySQL中是否有任何方法,其中以下查詢返回3個結果而不是2個?mysql從具有重複項目的列表中選擇

select * from products p where p.id in (303022, 287769, 303022) 
+0

咦?如果這些ID中的任何一個不存在,您將獲得2條記錄......如果這些ID可以是重複的,則所有投注都將關閉。 –

+0

如果你只有兩行有這兩個id,那麼一個簡單的查詢將永遠不會返回你3.你可以做一個更復雜的查詢來獲得303022兩次 –

回答

0

如果你想的303022值的兩倍,可以UNION ALL與該行的查詢,否則,與該查詢後總是回到只有兩個(假設ID是沒有在表中複製) :

select * from products p where p.id in (303022, 287769) 
UNION ALL 
select * from products p where p.id = 303022 
0

您可以通過連接到一個子查詢,並使用UNION ALL重複的子查詢的ID做到這一點。

例如:

select p.* 
from products p 
inner join 
    (
    select 303022 as id 
    union all select 287769 
    union all select 303022 
) sub_query on sub_query.id = p.id