sql >> Databasteknik >  >> RDS >> Mysql

Flera kolumner i MATCH MOT

Kolumnerna som heter inuti MATCH() måste vara samma kolumner som tidigare definierats för ett FULLTEXT-index. Det vill säga, uppsättningen kolumner måste vara densamma i ditt index som i ditt anrop till MATCH() .

Så för att söka i två kolumner måste du definiera ett FULLTEXT-index på samma två kolumner, i samma ordning.

Följande är okej:

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

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

Följande är fel eftersom MATCH() refererar till två kolumner men indexet är definierat för endast en kolumn.

ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);

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

Följande är fel eftersom MATCH() refererar till två kolumner men indexet är definierat för tre kolumner.

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

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

Följande är fel eftersom MATCH() refererar till två kolumner men varje index är definierat för en kolumn.

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

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

Följande är fel eftersom MATCH() refererar till två kolumner men i fel ordning:

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

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

Sammanfattningsvis måste användningen av MATCH() referera till exakt samma kolumner, i samma ordning, som en fulltextindexdefinition.




  1. Hur man ställer in korrekt MySQL JDBC-tidszon i Spring Boot-konfigurationen

  2. Konfigurera SQL Server Alltid PÅ Tillgänglighetsgrupper mellan två synkrona repliker. Del 2

  3. Varför använda Foreign Key-begränsningar i MySQL?

  4. Arbeta med MySQL TIMESTAMP-kolumner i SQL Server