代码:
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

解决方案 »

  1.   

    AGAINST()函数中的参数需为在查询评估期间保持不变的字符串常量
      

  2.   


    我这个以前是用的like 可是like查询好慢,所以想换用这个。还有其他更好方式吗???
      

  3.   

    针对你给出的语句,写个函数可以
    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