如何将SQL中不相关的表的行连接到一个视图中?

问题描述 投票:0回答:1

我正在研究一种创建索引表的方法,而无需运行某种 cron 来按计划更新它。我想我可以使用视图来搜索可能是最好的选择。

我想要加入最多 5 个完全不相关的表。这就是我想要实现的目标:

表一(页数):

id 名字 蛞蝓
1 资源 资源
2 联系我们 联系我们

表二(博客):

id 标题 描述
4 如何使用网络 基本描述
7 世界你好! 你好你好!

期望查看结果:

id 名字 搜索参数
1 资源 资源
2 联系我们 联系我们
4 如何使用网络 基本描述
7 世界你好! 你好你好!

我希望保持行完整,但将它们重命名为最终的视图结果。如果需要,如果我需要更多信息,我还会添加其他 searchparam 列,例如 searchparam2、searchparam3...等。将多个表连接到一个视图中以便稍后查找的最佳方法是什么?

谢谢!

mysql
1个回答
0
投票

您可以使用

Common Table Expression
(又名 CTE)将具有不同列名的表合并到所需的结构中。解决办法如下:

WITH searchable AS (
    SELECT 
        p.id::text,
        p.name AS name,
        p.slug AS searchparam
    FROM pages p 

    UNION ALL

    SELECT 
        b.id::text,
        b.title as name,
        b.desc as searchparam,
    FROM blogs b
    /* UNION ALL
    SELECT ... continue the pattern as many table as you want
    */
    
)
SELECT * FROM searchable;

这是一个示例输出 pgsql output


这是一个示例查询,如果您计划在生产中使用搜索功能,请考虑优化数据类型并创建适当的索引以获得更快的结果。

© www.soinside.com 2019 - 2024. All rights reserved.