【问题标题】:subquery (Incorrect arguments to AGAINST) using Mysql使用 Mysql 的子查询(对 AGAINST 的参数不正确)
【发布时间】:2012-05-14 23:56:14
【问题描述】:

当我使用 MySql 使用 MATCH AGAINST 执行此 查询 时(请参阅查询 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

错误

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

【问题讨论】:

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


    【解决方案1】:

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

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

    来自documentation

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

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

    【讨论】:

    • 感谢分享您的经验
    • 替代解决方案做什么?
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2021-12-09
    • 1970-01-01
    • 2019-08-30
    相关资源
    最近更新 更多