当我使用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,尽管您应该注意它会慢很多.