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]