Пересчет тегов в одном запросе - PullRequest
0 голосов
/ 24 декабря 2011

У меня есть две таблицы: статьи и теги.

ARTICLES
id
tags
content

TAGS
tag
amount

Мне нужно пересчитать количество всех тегов в таблице TAGS.Это не должно быть трудным, потому что я использую индекс FULLTEXT в таблице ARTICLES - поиск возможен с использованием

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)

1 Ответ

0 голосов
/ 15 февраля 2012

Всегда читайте руководство, когда вы получаете сообщение об ошибке, оно наиболее полезно:

AGAINST принимает строку для поиска и необязательный модификатор, который указывает, какой тип поиска выполнять. Строка поиска должна быть литеральной строкой, а не переменной или именем столбца.

Ссылка: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match

Итак, то, что вы пытаетесь достичь, сделано неправильно. Используйте буквальную строку вместо функции (CONCAT) и имени столбца.

Смежный вопрос: Проблема MySQL Match

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...