Mysql的子查询(AGAINST的参数不正确)

当我使用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-使用行排序的SQL子查询的顺序反转


下一篇:mysql-为什么使用IN(子查询)的查询要比使用IN(离散列表)的查询花费更长的时间