Mysql Union повторяет результаты

0

У меня есть следующий выбор, но он повторяет результаты второго внутреннего выбора 3 раза.

Может ли кто-нибудь сказать мне, почему это так.

Также, когда я получаю результаты, как я могу узнать, из какой таблицы пришли результаты. Home_content или objects_table.

SELECT * FROM (SELECT hm_id, hm_name, hm_summary, 
MATCH (hm_name, hm_summary) AGAINST  ('test') AS score FROM home_content 
WHERE MATCH (hm_name, hm_summary) AGAINST ('test') UNION SELECT  fac_id,fac_name,          
fac_summary, MATCH (fac_title, fac_summary) AGAINST ('test') AS score FROM 
facilities_table WHERE MATCH (fac_title, fac_summary) AGAINST ('test')) a 
ORDER BY SCORE DESC

Заранее спасибо

Теги:

1 ответ

0

Не могу понять, почему вы получаете дубликаты из этого запроса, если:

  • В исходной таблице есть дубликаты
  • Те же данные отображаются в home_content и facilties_table (возможно, один из них является видом другого?)

Вторая часть вопроса о том, как решить, из какой таблицы выводится содержимое союза, легко адресуется путем добавления константного столбца к каждому запросу объединения, дающего вам что-то вроде этого:

SELECT * FROM (SELECT 1,hm_id, hm_name, hm_summary, 
MATCH (hm_name, hm_summary) AGAINST  ('test') AS score FROM home_content 
WHERE MATCH (hm_name, hm_summary) AGAINST ('test') UNION SELECT  2,fac_id,fac_name,          
fac_summary, MATCH (fac_title, fac_summary) AGAINST ('test') AS score FROM 
facilities_table WHERE MATCH (fac_title, fac_summary) AGAINST ('test')) a 
ORDER BY SCORE DESC

В этом случае начальный столбец должен быть равным 1 для таблицы home_content и 2 для объектов_table. Очевидно, строковые константы могут использоваться в стиле similair, если это вам подходит.

  • 0
    как мне тогда использовать результаты этого дополнительного столбца. Как ссылка на столбец?
  • 0
    Это первый столбец в возвращаемом наборе 1 означает home_content, а 2 - означает средства

Ещё вопросы

Сообщество Overcoder
Наверх
Меню