使用mysql如何计算成功OR的数量?

时间:2011-07-09 19:39:42

标签: php mysql select

我基本上想要计算成功的ors数量,以便我可以告诉每个项目与搜索查询的相关性。这是表结构:

CREATE TABLE `items` (
 `id` int(11) NOT NULL auto_increment,
 `listing_id` int(11) NOT NULL,
 `name` varchar(256) NOT NULL,
 `description` varchar(1000) NOT NULL,
 `image` varchar(100) NOT NULL,
 `image_caption` varchar(100) NOT NULL,
 `keywords` varchar(10000) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=90 DEFAULT CHARSET=latin1

这是一行的例子:

 `id` = 1
 `listing_id` = 1,
 `name` = 'listing test',
 `description` = 'listing desc',
 `image` = '',
 `image_caption` = '',
 `keywords` = 'youtube video fun'

这就是我希望mysql在伪代码中做的事情:

 SELECT id,name,description AND count FROM items WHERE `keywords` LIKE '%video%' AND LIKE '%keyword2%' AND LIKE '%youtube%' AND LIKE '%text%'

我希望得到这些结果:

 `id` = 1
 `name` = 'listing test',
 `description` = 'listing desc',
 `count` = 2

1 个答案:

答案 0 :(得分:5)

像这样的东西。 (我使用“score”而不是“count”,因为“count”是一个SQL函数名。)

SELECT id, name, description, (
    IF(keywords LIKE '%video%', 1, 0)
  + IF(keywords LIKE '%keyword2%', 1, 0)
  + IF(keywords LIKE '%keyword3%', 1, 0)
) score
FROM table
HAVING score > 0

请注意,此查询将非常慢,因为它必须检查每一行。