Que*_*ter 4 mysql full-text-search subquery match-against
当我使用 MySql使用MATCH AGAINST执行此 查询时 (请参阅查询 1st),此查询中的问题产生了这样的错误(请参阅错误),或者当我使用=执行相同的查询时, 它们正常执行(请参阅查询 2nd)。
我的问题是我对反对声明做错了什么?
查询第一
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
Run Code Online (Sandbox Code Playgroud)
错误
enter code hereError Code : 1210
Incorrect arguments to AGAINST
(0 ms taken)
Run Code Online (Sandbox Code Playgroud)
更新
查询 2
SELECT
(SELECT COUNT(up.`user_id`)
FROM `users_post` up WHERE up.`user_id` = uf.`user_id`)
AS user_count
FROM `users` uf
Run Code Online (Sandbox Code Playgroud)
问题是 for 的参数AGAINST必须是文字字符串,例如'Fred'。不允许使用像uf.user_id.
MATCH (up.`user_id`) AGAINST (uf.`user_id`)
-- ^^^^^^^^^^^^ not allowed!
Run Code Online (Sandbox Code Playgroud)
从文档:
搜索字符串必须是文字字符串,而不是变量或列名。
您可能需要使用LIKE而不是MATCH,但您应该注意它会慢得多。