4

MySql を使用してMATCH AGAINSTでこの クエリを 実行すると ( Query 1st を参照)、このクエリの問題で、このようなエラーが生成されました ( errorを参照)。または=を使用して同じクエリを実行すると、 正常に実行されました ( Query 2nd を参照)。

私の質問は、ステートメントに対して何が間違っているのですか?

クエリ 1 番目

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)

アップデート

クエリ 2 番目

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

1 に答える 1

6

問題は、 の引数がAGAINSTリテラル文字列でなければならないことです (例: ) 'Fred'。のような列名は使用できませんuf.user_id

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

ドキュメントから:

検索文字列は、変数や列名ではなく、リテラル文字列である必要があります。

おそらくLIKEの代わりにを使用する必要MATCHがありますが、はるかに遅くなることに注意してください。

于 2012-05-05T20:35:41.303 に答える