sql >> Database >  >> RDS >> Mysql

Meerdere kolommen in MATCH TEGEN

De kolommen met de naam in MATCH() moeten dezelfde kolommen zijn die eerder zijn gedefinieerd voor een FULLTEXT-index. Dat wil zeggen, de set kolommen moet hetzelfde zijn in uw index als in uw aanroep naar MATCH() .

Dus om in twee kolommen te zoeken, moet u een FULLTEXT-index definiëren op dezelfde twee kolommen, in dezelfde volgorde.

Het volgende is oké:

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

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

Het volgende is onjuist omdat de MATCH() verwijst naar twee kolommen, maar de index is gedefinieerd voor slechts één kolom.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);

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

Het volgende is fout omdat de MATCH() naar twee kolommen verwijst, maar de index is gedefinieerd voor drie kolommen.

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

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

Het volgende is fout omdat de MATCH() verwijst naar twee kolommen, maar elke index is gedefinieerd voor één kolom.

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

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

Het volgende is fout omdat de MATCH() verwijst naar twee kolommen, maar in de verkeerde volgorde:

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

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

Samengevat, het gebruik van MATCH() moet verwijzen naar exact dezelfde kolommen, in dezelfde volgorde, als één fulltext indexdefinitie.




  1. Hoe vind ik ontbrekende rijen (datums) in een mysql-tabel?

  2. Waar kan ik een voorbeeld van een Mysql-database downloaden?

  3. Selecteer Bulk Collect in Oracle-voorbeeld

  4. ORA-01460:niet-geïmplementeerde of onredelijke conversie gevraagd