sql >> Databáze >  >> RDS >> Mysql

Více sloupců v MATCH PROTI

Sloupce pojmenované uvnitř MATCH() musí být stejné sloupce definované dříve pro FULLTEXTOVÝ index. To znamená, že sada sloupců musí být ve vašem indexu stejná jako ve vašem volání funkce MATCH() .

Chcete-li tedy prohledávat dva sloupce, musíte definovat FULLTEXTOVÝ index ve stejných dvou sloupcích ve stejném pořadí.

Následující je v pořádku:

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Následující je chybné, protože MATCH() odkazuje na dva sloupce, ale index je definován pouze pro jeden sloupec.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Následující je chybné, protože MATCH() odkazuje na dva sloupce, ale index je definován pro tři sloupce.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Následující je chybné, protože MATCH() odkazuje na dva sloupce, ale každý index je definován pro jeden sloupec.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')

Následující je chybné, protože MATCH() odkazuje na dva sloupce, ale ve špatném pořadí:

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);

SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')

Stručně řečeno, použití MATCH() musí odkazovat přesně na stejné sloupce ve stejném pořadí jako jedna definice fulltextového indexu.




  1. MYSQL LEFT JOIN s GROUP BY

  2. Jak aktualizovat všechny sloupce pomocí INSERT ... ON CONFLICT ...?

  3. Jak převést časové pásmo v MySQL

  4. Importujte soubory XML do PostgreSQL