我建议不要这样做,它违反了规范化规则。
请参阅我一直搞砸 1NF
或阅读规范化标签下的帖子。
重新设计表格的建议
如果您像这样制作标签和标签链接表。
table tag
id autoincrement integer primary index
tag_str varchar(20) index unique not null
table taglink
id autoincrement integer primary index #gotta have an ID in my book.
tag_id integer not null
product_id integer not null
你有一个类似这样的销售表。
table product
id autoincement integer primary index
desc varchar(255)
barcode, price, whatever ...
选择语句以查找每个标签的产品
然后,您可以查找与标签匹配的文章,如下所示。
select * from product
inner join taglink on (product.id = taglink.product_id)
inner join tag on (taglink.tag_id = tag.id)
where tag.tag_str in ('foo','bar','baz');
选择语句以列出每个产品的标签
select tag_str from tag
inner join taglink on (taglink.tag_id = tag.id)
inner join product on (taglink.product_id = product.id)
where product.barcode = '4548215' or product.desc like 'OMG Po%'
添加新标签
要添加新标签,只需
insert into tag (id, tag_str) values (
null /*remember autoincrement*/
,'Mytag');
链接标签
将标签链接到产品
set @product_id = 10;
set @tag_id = 1;
...or...
select @product_id:= product.id from product where product.barcode = '1254851';
...
insert into taglink (id, product_id, tag_id) values (
null /*autoinc id*/
,@product_id
,@tag_id );
您可以将无限数量的标签链接到产品,并且不会因昂贵的FIND_IN_SET
语句而减慢查询速度。
并且您可以防止重复标签。
您的数据库将更快更小。