【问题标题】:Recounting tags in one query在一个查询中重新计算标签
【发布时间】:2011-12-24 19:50:24
【问题描述】:

我有两个表:文章和标签。

ARTICLES
id
tags
content

TAGS
tag
amount

我需要重新计算 TAGS 表中所有标签的数量。这应该不难,因为我在 ARTICLES 表中使用 FULLTEXT 索引 - 可以使用

进行搜索
MATCH(tags) AGAINST ('+tag' IN BOOLEAN MODE) 

所以它类似于 Stack Overflow 数据库方案。

我尝试了类似的方法,但显然它不起作用:

UPDATE tags 
SET tags.amount=(SELECT COUNT(*) FROM articles 
                      WHERE MATCH(articles.tags) 
                      AGAINST (CONCAT('+',tags.tag) IN BOOLEAN MODE)

【问题讨论】:

  • “它不工作”是什么意思?你得到一个错误?如果有呢?
  • "#1210 - 反对的参数不正确" - CONCAT 的问题
  • 如何将多个标签存储在一个列中?
  • 标签用空格分隔。全文工作正常,但我必须以某种方式在标签名称之前添加 +

标签: mysql tags


【解决方案1】:

当您收到错误消息时,请务必阅读手册,这很有帮助:

AGAINST 接受一个要搜索的字符串和一个可选的修饰符,指示要执行的搜索类型。搜索字符串必须是文字字符串,而不是变量或列名。

参考:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match

因此,您尝试实现的目标是错误的。使用文字字符串而不是函数 (CONCAT) 和列名。

一个相关的问题是:MySQL Match issue

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多