我正在使用 MyBatis 和 PostgreSQL,我需要使用 mybatis 鉴别器。我有 10 个表,我加入了一个 testcase
表。我想为每个连接添加一个具有不同值的伪列,以便我知道每个连接来自哪个表。然后我可以在 MyBatis 鉴别器中使用它。
我试过了,这显然不起作用,因为这会添加 2 列,其中每行都有 pseudo_name_1
或 pseudo_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/