我想编写一个查询来搜索多个表(新闻、文章、项目、文件)
在搜索时我发现了这个
SELECT title, post FROM news WHERE MATCH (title,post) AGAINST ('press');
我对其进行了测试并且它正在工作,但我未能将其扩展到多个表。
如何编写一个查询返回多个表的搜索结果?
这是一种方法。我不确定 Match 是做什么的,但在哪里你也可以使用 Match 功能
Select Table1.Title, Table2.Post FROM Table1, Table2 WHERE Table1.Title = 'press' AND Table2.Title = 'press'
此查询将为您提供 2 个表的标题和帖子,这两个表都包含新闻。
一种方法是使用union
:
SELECT title, post FROM news WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM articles WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM projects WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM files WHERE MATCH (title,post) AGAINST ('press')
这现在基本上变成了一个伪表,所有记录都合并到一个数据集中。
看看这个查询,你可以这样使用 -
SELECT *
FROM news t1, articles t2, projects t3, files t4 WHERE MATCH ( t1.title, t1.post)
AGAINST ('press') or Match(t2.title,t2.post) AGAINST('press')
并在 MATCH() 函数中设置要搜索的所有列。
你可以试试这个,它可能对你有帮助。