全文索引[Err] 1210 - Incorrect arguments to AGAINST

m0_38006660 2018-01-05 05:30:14
代码:
SELECT
u.id,
u.loginName NAME,
u.memberType type,
u.fanDian AS fan,

(
SELECT
ifnull(sum(a.money), 0)
FROM
emep_Account a
WHERE
a.type IN (2,8)
AND MATCH(a.parents) AGAINST (u.id)
) fanDian
FROM
emep_user u
WHERE
u.id = 80182
OR u.parentId = 80182

以上代码如果把MATCH(a.parents) AGAINST (u.id) 里面的u.id换成 ‘80182’ 就可以执行,否则报错[Err] 1210 - Incorrect arguments to AGAINST
...全文
1428 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2018-01-09
  • 打赏
  • 举报
回复
针对你给出的语句,写个函数可以
create function f_test(id text)
returns decimal(18,2)
return(
	SELECT 
            IFNULL(SUM(a.money), 0)
        FROM
            emep_Account a
        WHERE
            a.type IN (2 , 8)
                AND MATCH (a.parents) AGAINST (id)
);

SELECT 
    u.id,
    u.loginName NAME,
    u.memberType type,
    u.fanDian AS fan,
    f_test(u.id) fanDian
FROM
    emep_user u
WHERE
    u.id = 80182 OR u.parentId = 80182
m0_38006660 2018-01-05
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
AGAINST()函数中的参数需为在查询评估期间保持不变的字符串常量
那可以通过什么方式可以把他变为静态的再去查,能不能通过存储过程呢?
m0_38006660 2018-01-05
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
AGAINST()函数中的参数需为在查询评估期间保持不变的字符串常量
我这个以前是用的like 可是like查询好慢,所以想换用这个。还有其他更好方式吗???
m0_38006660 2018-01-05
  • 打赏
  • 举报
回复
如果是可变的没办法吗??
zjcxc 2018-01-05
  • 打赏
  • 举报
回复
AGAINST()函数中的参数需为在查询评估期间保持不变的字符串常量

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧