软件开发数据库GBase 8t

gbase8t有没有select as语句

有没有类似于“select(1,2,3) as source(id, line, row)”的语句,其中source不是表名,id、line、和row也是起的别名,为了方便后续通过source.id,source.line,source.row取值。在merge into的时候需要用到。...显示全部

有没有类似于“select(1,2,3) as source(id, line, row)”的语句,其中source不是表名,id、line、和row也是起的别名,为了方便后续通过source.id,source.line,source.row取值。

在merge into的时候需要用到。

收起
参与17

查看其它 3 个回答faleor的回答

faleorfaleor数据库管理员GBase

merge into target

using (select 1, 25, 'XiaoLi' from systables where tabid=1) as source(id, age, name)

on target.id=source.id

when matched then

update set target.id=source.id, target.age=source.age, target.name=source.name

when not matched then

insert (target.id, target.age, target.name) values(source.id, source.age, source.name);

金融其它 · 2016-04-25
  • 哇,大神!果然是这样的。我还有个问题能问问吗,如果1,25,‘XiaoLi’这三个值待确定,也就是我要用prepareStatement来赋值,这三个值都暂时用问号“?”来代替,为何会报语法错误?
    2016-04-25
  • 你的一句大神极大的满足了我的虚荣心,我决定再回答你一次,按我的理解prepareStatement应该不是这样用的,用变量替换这几个常量不行吗?
    2016-04-25
  • 忙了一天,抱歉没有及时回复.prepareStatement就是用?代替sql中待定的变量,然后再通过参数赋值给每一个?赋值.
    2016-04-26
  • liaosnet  liaosnet回复 faleor
    刘大神~~prepare statement在java里常用到。理论上也应该可以,应该是动态sql的范围。
    2016-04-29
  • faleor  faleor回复 liaosnet
    按我的理解,?只能代替不影响执行计划的具体变量值,而不能代替字段名或表名,因为如果字段名都没有定义的话,是没法解析的,他那里报语法错误肯定也是因为?没有替换成他想要的值
    2016-04-29
  • liaosnet  liaosnet回复 faleor
    应该是要在动态sql中使用,而不是用 ? 代替。。
    2016-04-30

回答者

faleor
数据库管理员GBase

faleor 最近回答过的问题

回答状态

  • 发布时间:2016-04-25
  • 关注会员:3 人
  • 回答浏览:963
  • X社区推广