表是
CREATE TABLE `news` (
`id` bigint(20) NOT NULL auto_increment,
`title` varchar(255) default NULL,
`tagkey` text NOT NULL,
PRIMARY KEY (`id`)
) ;
INSERT INTO `news` VALUES (1, 'TITLE1','3D');
INSERT INTO `news` VALUES (2, 'TITLE2 ','cat');
INSERT INTO `news` VALUES (3, 'TITLE2','BOOKs,3D');
INSERT INTO `news` VALUES (4, 'TITLE1','3D,DOG');
INSERT INTO `news` VALUES (5, 'TITLE2 ','DOG');
INSERT INTO `news` VALUES (6, 'TITLE2','BOOKs,DOG');
INSERT INTO `news` VALUES (7, 'TITLE1','Wolf,DOG');
INSERT INTO `news` VALUES (8, 'TITLE2 ','cat,DOG');
INSERT INTO `news` VALUES (9, 'TITLE2','BOOKs,cat');
todo查询' cat',预订。我使用了这个查询。但无法搜索正确的数据。
select * FROM news WHERE tagkey IN ('book','cat')
$list = array('cat','DOG');
$list = array_map('apply_quotes', $list);
$query = "select * FROM news
WHERE tagkey IN (" . join(',', $list) . ") AND id <> $id";
答案 0 :(得分:3)
我会猜测你想要查询某些内容LIKE
SELECT *
FROM news
WHERE tagkey LIKE '%cat%' OR tagkey LIKE '%book%'
但您应该认真考虑规范化数据库,而不是将列表存储在一列中。
或者正如Marc在评论FIND_IN_SET(str,strlist)
中所建议的那样SELECT *
FROM news
WHERE FIND_IN_SET('book', tagkey)
OR FIND_IN_SET('cat', tagkey)
答案 1 :(得分:1)
我最好的答案是不要那么做,有很多'为什么',其中一些:
我建议您根据基数创建关系表,并将不同行中的项目分开,创建索引和Voila!。
请看一下这个链接,这将有助于您将来提高自己的技能。