2013-01-08 167 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好得多。 你可以发布期望的结果吗?