dongyuan1160 2011-07-09 19:39
浏览 72
已采纳

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

I basically want to count the number of ors that are successful so that I can tell the relevance of each item to the search query. This is the table structure:

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

and this is an example of a row:

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

And this is what I want the mysql to do in pseudo code:

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

And I want to get these results:

 `id` = 1
 `name` = 'listing test',
 `description` = 'listing desc',
 `count` = 2
  • 写回答

1条回答 默认 最新

  • dongyue0225 2011-07-09 19:43
    关注

    Something like this. (I used "score" instead of "count" because "count" is a SQL function name.)

    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
    

    Note that this query will be quite slow, as it must examine every row.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗