Skip to content Skip to sidebar Skip to footer

Find Name Or Alias Of Matched Column In Match() Against()

I am using MATCH() AGAINST() for full text search in my database. As since i wanted data from multiple tables, i created a VIEW and am using following format of query in MARIADB, S

Solution 1:

You can use a case expression in the select:

SELECT DAT1, DAT2, DAT3,
       CONCAT_WS(',',
                 (CASEWHENMATCH(COL1) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0THEN'col1'END),
                 (CASEWHENMATCH(COL2) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0THEN'col2'END),
                 (CASEWHENMATCH(COL2) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0THEN'col3'END)
                ) as cols
FROM VIEW1
WHEREMATCH (COL1) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0ORMATCH (COL2) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0ORMATCH (COL3) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) >0;

Solution 2:

( SELECT DAT1
    FROM tbl1
    WHEREMATCH (COL1) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) )
UNIONALL
( SELECT DAT2
    FROM tbl2
    WHEREMATCH (COL2) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) )
UNIONALL    
( SELECT DAT3
    FROM tbl3
    WHEREMATCH (COL3) AGAINST ('lisa mona aachen'INNATURALLANGUAGE MODE) )

UNION ALL is faster than the default (UNION DISTINCT), but use DISTINCT if there could be dups and you want them to be de-dupped.

No VIEW needed. Or, you could make the above a VIEW with the text string waiting to be filled in (via an @variable?).

Post a Comment for "Find Name Or Alias Of Matched Column In Match() Against()"