我目前正在从3个表中搜索(在将其排序后将搜索更多)。此查询按查询中列出的表的顺序显示所有结果。我希望首先获得最相关的搜索结果。
(Select name, url, text, 'behandlinger_scat' AS `table` from behandlinger_scat where name LIKE '%KEYWORD%' OR text LIKE '%KEYWORD%')
UNION
(Select name, url, text, 'hudsykdommer_scat' AS `table` from hudsykdommer_scat where name LIKE '%KEYWORD%' OR text LIKE '%KEYWORD%')
UNION
(Select name, url, text, 'om_oss' AS `table` from om_oss where name LIKE '%KEYWORD%' OR text LIKE '%KEYWORD%')
任何帮助都将不胜感激。
答案 0 :(得分:3)
您可以使用方法按动态提供结果的点进行排序,如本示例所示(您需要对表进行别名,以便SQL了解您所指的列):
ORDER BY
CASE WHEN name LIKE table.keywords THEN 100 ELSE 0 END +
CASE WHEN name LIKE table2.keywords THEN 10 ELSE 0 END +
CASE WHEN text LIKE table2.keyword THEN 1 ELSE 0 END
DESC
这只是一个例子,但概念如下:
你决定了多少"点"每个"匹配"将收到(例如名称匹配关键字是100分,文本匹配它 - 少一点)然后,每一行"累积"与其匹配相关的点,具有最多点的行首先显示。