Sql 添加要选择的伪列,并使用连接查询指示连接来自的表名
我正在使用MyBatis和PostgreSQL,我需要使用MyBatis鉴别器。我在Sql 添加要选择的伪列,并使用连接查询指示连接来自的表名,sql,postgresql,Sql,Postgresql,我正在使用MyBatis和PostgreSQL,我需要使用MyBatis鉴别器。我在testcase表中加入了10个表。我想添加一个伪列,每个连接都有一个不同的值,这样我就知道每个连接来自哪个表。然后我可以在MyBatis鉴别器中使用它 我尝试了这个,这显然不起作用,因为它添加了两列,其中每行都有pseudo\u name\u 1或pseudo\u name\u 2 SELECT tc.testcaseid, tc.testname,
testcase
表中加入了10个表。我想添加一个伪列,每个连接都有一个不同的值,这样我就知道每个连接来自哪个表。然后我可以在MyBatis鉴别器中使用它
我尝试了这个,这显然不起作用,因为它添加了两列,其中每行都有pseudo\u name\u 1
或pseudo\u name\u 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
我基本上想要一个伪列,其中带有accessoryfilter
值的行具有pseudo\u name\u 1
值,capabilityfilter
的值具有pseudo\u name\u 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
这在postgres中是否可能,如果可能,如何实现?可能:
也许:
使用“全部联合”:
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;
请注意,这还修复了第二个
连接
条件。使用联合所有
:
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;
请注意,这也修复了第二个
连接
条件。可能与情况类似,当a.accessoryfilterid为null时,则“pseudo\u name\u 1”或“pseudo\u name\u 2”结束代码>可以帮忙吗?(您可能至少还需要改进ELSE子句)。LEFT JOIN+COALESCE()@wildplasser您能详细说明一下吗@HeikoJakubzik会不会仅仅修改a.acessoryfilterid
?我需要一个跨越所有连接的“共享”列,以便mybatis(我的sql映射器)在……
子句是一个单独的列时切换到情况;在END
之后附加作为伪列
,以便为其命名。因此,不,它不会修改acessoryfilterid。但我不能说我理解mybatis中对共享列的要求,也不能说我理解您所看到的两种情况代码>可以帮忙吗?(您可能至少还需要改进ELSE子句)。LEFT JOIN+COALESCE()@wildplasser您能详细说明一下吗@HeikoJakubzik会不会仅仅修改a.acessoryfilterid
?我需要一个跨越所有连接的“共享”列,以便mybatis(我的sql映射器)在……
子句是一个单独的列时切换到情况;在END
之后附加作为伪列
,以便为其命名。因此,不,它不会修改acessoryfilterid。但我不能说我理解mybatis中对共享列的要求,也不能说我理解您所看到的这两种情况。