sql >> データベース >  >> RDS >> Mysql

MATCHAGAINSTの複数の列

    MATCH()内で名前が付けられた列 FULLTEXTインデックスに対して以前に定義されたものと同じ列である必要があります。つまり、列のセットは、インデックス内でMATCH()の呼び出し時と同じである必要があります。 。

    したがって、2つの列を検索するには、同じ2つの列に同じ順序でFULLTEXTインデックスを定義する必要があります。

    以下は問題ありません:

    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
    
    SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
    

    MATCH()は2つの列を参照しますが、インデックスは1つの列に対してのみ定義されているため、以下は誤りです。

    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
    
    SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
    

    MATCH()は2つの列を参照しますが、インデックスは3つの列に対して定義されているため、以下は間違っています。

    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
    
    SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
    

    MATCH()は2つの列を参照しますが、各インデックスは1つの列に対して定義されているため、以下は間違っています。

    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
    
    SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
    

    MATCH()が2つの列を参照しているが、順序が間違っているため、以下は間違っています。

    ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
    
    SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
    

    要約すると、MATCH()の使用は、1つのフルテキストインデックス定義とまったく同じ列を同じ順序で参照する必要があります。




    1. MySQLWorkbenchでのフォントの変更

    2. 日時フィールドのUTCをどのように取得しますか?

    3. RapidMinerでのODBCデータの使用

    4. Oracle PL / SQL:DBMS_SCHEDULER.CREATE_JOBの例