2013-01-08 197 views
0

我有下面的示例sql查詢:
mysql比較2個陣列

 
    SELECT.. 
    FIND_IN_SET((SELECT cat_id 
    FROM mydb.table_categories 
    WHERE cat_name LIKE "%Pets%"),b.categories_id) 
其中顯示mysql錯誤。

此示例查詢:的(25260) 返回結果,我想比較,如果它在b.categories_id發現了b.categories id包含(9,25,257,300)

換句話說能我們以這種方式使用find_in_set?find_in_set((25,260),(9,25,257,300))?

+0

你可以參考php手冊來比較/合併/ split/search php'arrays()'。 –

+0

錯誤是什麼? –

+0

請注意,SQL LIKE「%Pets%」等SQL通配符搜索可能非常慢。如果你有一個相對較小的數據庫,它會很好,但它不會很好地擴展。 – SDC

回答

2

嘗試使用GROUP_CONCAT

SELECT .... 
    FIND_IN_SET((SELECT GROUP_CONCAT(cat_id) 
        FROM mydb.table_categories 
        WHERE cat_name LIKE "%Pets%"),b.categories_id) 
FROM.... 

或者,你仍然可以使用JOININ條款就這一個。比使用GROUP_CONCAT好得多。 你可以發佈期望的結果嗎?