Найти имя или псевдоним сопоставляемого столбца в MATCH () ПРОТИВ () - PullRequest
0 голосов
/ 19 октября 2019

Я использую MATCH() AGAINST() для полнотекстового поиска в моей базе данных. Поскольку я хотел получить данные из нескольких таблиц, я создал VIEW и использую следующий формат запроса в MARIADB,

SELECT 
DAT1, DAT2, DAT3 
FROM VIEW1
WHERE 
MATCH (COL1) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) OR
MATCH (COL2) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) OR
MATCH (COL3) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE)

Все работает нормально, но, тем не менее, я ищу дополнительный выводв запросе, и это Имя столбца Я нашел результат поиска в.

Как я могу получить имя или псевдоним COL1, COL2 и COL3 соответствующей строкив выводе запроса?

Ответы [ 2 ]

2 голосов
/ 19 октября 2019

Вы можете использовать выражение case в select:

SELECT DAT1, DAT2, DAT3,
       CONCAT_WS(',',
                 (CASE WHEN MATCH(COL1) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0 THEN 'col1' END),
                 (CASE WHEN MATCH(COL2) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0 THEN 'col2' END),
                 (CASE WHEN MATCH(COL2) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0 THEN 'col3' END)
                ) as cols
FROM VIEW1
WHERE MATCH (COL1) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0 OR
      MATCH (COL2) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0 OR
      MATCH (COL3) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) > 0;
1 голос
/ 21 октября 2019
( SELECT DAT1
    FROM tbl1
    WHERE MATCH (COL1) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) )
UNION ALL
( SELECT DAT2
    FROM tbl2
    WHERE MATCH (COL2) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) )
UNION ALL    
( SELECT DAT3
    FROM tbl3
    WHERE MATCH (COL3) AGAINST ('lisa mona aachen' IN NATURAL LANGUAGE MODE) )

UNION ALL быстрее значения по умолчанию (UNION DISTINCT), но используйте DISTINCT, если могут быть ошибки, и вы хотите, чтобы они были отключены.

Нет VIEWнеобходимо. Или вы могли бы сделать выше VIEW с текстовой строкой, ожидающей заполнения (через @variable?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...