数据库
首页 > 数据库> > Mysql的子查询(AGAINST的参数不正确)

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

标签:subquery,full-text-search,match-against,mysql
来源: https://codeday.me/bug/20191201/2080274.html