当我使用MySql使用MATCH AGAINST执行此查询时(请参阅查询1st),此查询中的问题会生成这样的错误(请参阅错误),或者当我使用=执行相同的查询时,它们将正常执行(请参阅查询2nd).

我的问题是,反对声明我做错了什么?

Query 1st
SELECT (SELECT COUNT(up.`user_id`) 
FROM `users_post` up WHERE MATCH (up.`user_id`) AGAINST (uf.`user_id`)) 
AS user_count 
FROM `users` uf
Error
enter code hereError Code : 1210
Incorrect arguments to AGAINST
(0 ms taken)

更新资料

Query 2nd
SELECT 
(SELECT COUNT(up.`user_id`) 
FROM `users_post` up WHERE up.`user_id` = uf.`user_id`) 
AS user_count 
FROM `users` uf

解决方法:


问题在于AGAINST的参数必须是文字字符串,例如’Fred’.不允许使用列名称,例如uf.user\_id.

MATCH (up.`user_id`) AGAINST (uf.`user_id`)
--                            ^^^^^^^^^^^^ not allowed!

documentation开始:

The search string must be a literal string, not a variable or a column name.

您可能需要使用LIKE而不是MATCH,尽管您应该注意它会慢很多.

标签: mysql, full-text-search, subquery, match-against

相关文章推荐

添加新评论,含*的栏目为必填