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

时间:2012-05-05 20:32:54

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

当我使用MySql(参见查询第一)执行此查询 MATCH AGAINST 时,此查询中出现的问题是:这个(看错误)或当我用 = 执行相同的查询时,它们正常执行(参见第二个查询

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

  

查询第一个

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
  

错误

enter code hereError Code : 1210
Incorrect arguments to AGAINST
(0 ms taken)

更新

  

查询第二次

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

1 个答案:

答案 0 :(得分:3)

问题是AGAINST的参数必须是文字字符串,例如'Fred'。不允许使用类似uf.user_id的列名。

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

来自documentation

  

搜索字符串必须是文字字符串,而不是变量或列名。

您可能需要使用LIKE代替MATCH,但您应该注意它会慢得多。