5
這可能不太明智,但如果WHERE IN
子句中存在重複條件,我想讓MySQL返回確切的重複行。這可能嗎?強制MySQL從WHERE IN子句中返回重複項而不使用JOIN/UNION?
拿這個例子:
SELECT
columns
FROM
table
WHERE
id IN(1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld如MySQL 5個三倍,ID的1和2兩次,3和4回我行與ID一次。
作爲的IN
參數的lenght,以及重複的次數(一次,兩次,三次,等),將被適當地我不想依靠UNION
或JOIN
。是否有可能這樣呢?
嗨馬克,謝謝你的回答。從外觀上看,我想我只需要加入JOIN和UNION即可。我不知道你在這裏使用UNION的方式。我甚至不確定我完全理解它。 :)但它看起來非常漂亮!我之所以不想首先使用UNION,是因爲我認爲我必須一遍又一遍地重複精確的SELECT語句。這看起來很乾淨。 – 2010-02-13 22:00:21
順便說一句,這些聯盟會保證結果的確切順序,還是我仍然需要使用ORDER子句來按照他們在聲明中的順序排序? – 2010-02-13 22:03:36
如果您想保證訂單,您*需要訂購。這總是如此。幸運的是,很容易改變上面的查詢:'SELECT 1 as ID,1 as SortOrder UNION ALL SELECT 2,2 UNION ALL SELECT 3,3' etc ... then'ORDER BY SortOrder'''JOIN ..在...上。 – 2010-02-13 22:12:42