sql - 添加伪列以使用连接查询进行选择,指示连接来自的表名

标签 sql postgresql

我正在使用 MyBatis 和 PostgreSQL,我需要使用 mybatis 鉴别器。我有 10 个表,我加入了一个 testcase 表。我想为每个连接添加一个具有不同值的伪列,以便我知道每个连接来自哪个表。然后我可以在 MyBatis 鉴别器中使用它。

我试过了,这显然不起作用,因为这会添加 2 列,其中每行都有 pseudo_name_1pseudo_name_2

SELECT tc.testcaseid,
               tc.testname,

               a.accessoryfilterid,
               a.testcaseid,
               a.accessoryid,
               a.exclude
               'pseudo_name_1' AS pseudo_column,


               c.capabilityfilterid,
               c.exclude,
               c.testcaseid,
               c.capabilityid,
               'pseudo_name_2' AS psudo_column,

FROM testcase AS tc
    FULL JOIN accessoryfilter a on tc.testcaseid = a.testcaseid
    FULL JOIN capabilityfilter c on tc.testcaseid = a.testcaseid

我基本上想要 1 个伪列,其中具有 accessoryfilter 值的行的值为 pseudo_name_1 并且 capabilityfilter 的值具有值 伪名称_2

这在 postgres 中是否可行,如果可行,如何实现?

最佳答案

使用union all:

SELECT tc.testcaseid, tc.testname,
       a.accessoryfilterid, a.testcaseid, a.accessoryid, a.exclude,
       'pseudo_name_1' AS pseudo_column,
FROM testcase tc JOIN
     accessoryfilter a 
     ON tc.testcaseid = a.testcaseid
UNION ALL
SELECT tc.testcaseid, tc.testname,
       c.capabilityfilterid, c.exclude, c.testcaseid, c.capabilityid,
       'pseudo_name_2' AS psudo_column
FROM testcase tc JOIN 
     capabilityfilter c 
     ON tc.testcaseid = c.testcaseid;

请注意,这也修复了第二个 JOIN 条件。

关于sql - 添加伪列以使用连接查询进行选择,指示连接来自的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56144904/

相关文章:

php - MySQL加入: how to simplyfy the given query?

mysql - 从同一字段但在不同的两行中选择数据,然后输出到一行

mysql - 一个表能否获取其他表列数据

sql选择列不包含数字的位置

ruby-on-rails - 请求的 icu4c 版本不兼容

sql - 查询值为空的单行的列名?

mysql - 如何解决 MySQLSyntaxErrorException

sql - 将 sql View 查询更改为关系代数?

java - Heroku 找不到 Postgres JDBC 驱动程序

MySQL 与 PostgreSQL 与 SSRS