mysql - 将另一个表添加到 mySQL 查询

标签 mysql sql

到目前为止,我有以下运行良好的 SQL 查询:

SELECT *,
  MATCH(title, content_plain_text) AGAINST ('$searchTerm') AS score, 
  (MATCH(title, content_plain_text) AGAINST ('$searchTerm') / maxScore) AS normalisedScore
FROM pages,
  (SELECT MAX(MATCH(title, content_plain_text) AGAINST ('$searchTerm')) AS maxScore 
    FROM pages) maxScoreTable
    WHERE MATCH(title, content_plain_text) AGAINST ('$searchTerm')
    AND active = 1
    ORDER BY score DESC

所以现在我也想搜索另一个具有相同字段名称的表,如何在保持排名等的同时进行搜索?

谢谢!

最佳答案

我只是union all你的pages表和另一个表(假设它叫more_pages)。

WITH 结构确实能很好地解决这些问题,但不幸的是 MySQL 还不支持它。 我能想到的最优雅的替代方法是创建一个 View 来封装这个联合:

CREATE VIEW all_pages AS
SELECT * FROM pages
UNION ALL
SELECT * FROM more_pages


SELECT *,
  MATCH(title, content_plain_text) AGAINST ('$searchTerm') AS score, 
  (MATCH(title, content_plain_text) AGAINST ('$searchTerm') / maxScore) AS normalisedScore
FROM all_pages,
  (SELECT MAX(MATCH(title, content_plain_text) AGAINST ('$searchTerm')) AS maxScore 
    FROM all_pages) maxScoreTable
    WHERE MATCH(title, content_plain_text) AGAINST ('$searchTerm')
    AND active = 1
    ORDER BY score DESC

关于mysql - 将另一个表添加到 mySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949585/

相关文章:

Mysql - 访问被拒绝 - 无法触摸程序

java - spring mvc 中的 org.springframework.dao.QueryTimeoutException

mysql - 在 SQL 中连接表,包括计数数据

mysql - 困惑,MySQL 选择两个表 - 如果缺少一个表,则返回另一个表

php - 如何使用 PHP 和 SQL 更改按年份分组的导航的月份顺序

php - 优化查询SQL

javascript - AJAX POST 问题,变量为空,但在 echo 中显示

mysql - 如何根据第一个表的列值从两个表中获取行信息

sql - 连接具有相同连接类型的两个查询

sql - 我可以在外键列中添加非原子值吗?