mysql 的in和find_in_set区别??

select id from product_catalog where parent_id in(parent_id ,getAllparentlist(parentID)) ;
select id from product_catalog where find_in_set(parent_id ,getAllparentlist(parentID))

getAllparentlist()结果是获取子集例如: '$,101,102,103';

在确定使用in时有比较过两个方法;自己做的测试 结果时find_in_set 查出来的数据不如in完整,
但是在运用过程中
用in总是把所有的数据都查出来
而用find_in_set时却是部分数据 不是很明白这两个方法的区别

list 是个字段而已
[code="java"] list varchar(255) NOT NULL, [/code]

我给你举这个例子就是说明 in和find_in_set的区别,前者就是看list字段是否是'daodao',后者的意思是在list是否包含了daodao。

应该明了了咯。

后者是在本字段内的in,举个例子。
看下面

[code="java"]测试代码:
CREATE TABLE test (
id int(8) NOT NULL auto_increment,
name varchar(255) NOT NULL,
list varchar(255) NOT NULL,
PRIMARY KEY (id)
)

INSERT INTO test VALUES (1, 'name', 'daodao,xiaohu,xiaoqin');
INSERT INTO test VALUES (2, 'name2', 'xiaohu,daodao,xiaoqin');
INSERT INTO test VALUES (3, 'name3', 'xiaoqin,daodao,xiaohu');

test1:sql = select * from test where 'daodao' IN (list);
得到结果空值.
test2:sql = select * from test where FIND_IN_SET('daodao',list);
得到三条数据。[/code]