Joh*_*nry 2 sql union teradata
我有一个查询,它由两个select语句组成,中间有一个union.这适用于我需要它.但是,我想手动输入一个值丢失.我期待的是:
select * from tab1
union
select * from tab2
union
insert values('John',cast('2013-01-01' as date), 'Jim', 130)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.有人可以建议我这样做吗?我正在使用Teradata.
你需要继续选择:
select * from tab1
union
select * from tab2
union
select 'John', cast('2013-01-01' as date), 'Jim', 130 from dual
Run Code Online (Sandbox Code Playgroud)
该名称dual在Oracle中用于包含一行(和一列)的表.根据您使用的DBMS,您可以完全省略最终的FROM(并且您也可以在Oracle中执行此操作):
select * from tab1
union
select * from tab2
union
select 'John', cast('2013-01-01' as date), 'Jim', 130
Run Code Online (Sandbox Code Playgroud)
或者您可能必须从系统目录表中进行选择,并确保返回一行(FROM systables WHERE tabid = 1是Informix中的经典机制,尽管您也可以使用,'sysmaster':sysdual而不是dual等),或者您可以从任何其他表中选择查询保证一排.也许有可能使用VALUES子句来做到这一点.
请注意从双引号到单引号的更改.在严格的标准SQL中,双引号括起一个分隔标识符,但单引号括起来.