使用sql server vs mysql在更新时创建别名

时间:2015-06-18 15:29:04

标签: sql sql-server alias

我有这个查询完全符合我想要的mysql:

update st t1, (SELECT ref, u_peso, 
                (select u_peso from st
where st.ref=sc.refb) 
 as pesoaassumir, sc.refb 
 FROM st inner join sc
on st.ref=sc.ref) t2 
 set t1.u_peso = t2.pesoaassumir
  where t1.ref=t2.ref

我试图在SQL服务器中使用它,它在t1和t2附近给了我一个错误。 我做了一些研究,发现sql server上的别名在开始时和内部都没有被调用,而且我试图改变但是我没有运气。

例如:

update t1, (SELECT ref, u_peso, (select u_peso from st where st.ref=sc.refb)
as pesoaassumir, sc.refb FROM st t1 inner join sc t2 on st.ref=sc.ref) 
set t1.u_peso = t2.pesoaassumir
where t1.ref=t2.ref

这个给了我:Incorrect syntax near ','. LINE 1。这是第一个逗号。

如果我没有让自己明确表示抱歉

(OLD POST BELOW)

 update st t1, (SELECT ref, u_peso, 
                    (select u_peso from st
    where st.ref=sc.refb) 
     as pesoaassumir, sc.refb 
     FROM st inner join sc
    on st.ref=sc.ref) t2 
     set t1.u_peso = t2.pesoaassumir
      where t1.ref=t2.ref

我也尝试过这种方式:

update t1, (SELECT ref, u_peso, 
                    (select u_peso from st t1
    where t1.ref=t2.refb) 
     as pesoaassumir, t2.refb 
     FROM t1 inner join sc t2
    on t1.ref=t2.ref) 
     set t1.u_peso = t2.pesoaassumir
      where t1.ref=t2.ref

我不知道我做错了什么,我知道你可以在一分钟内解决这个问题:

(编辑)继承人我想做的事情

我有2张桌子

我无法发布图片但删除了空格  image1   image2

我想从第二个字段中复制字段peso以获取与第一个表相关的项目

例如

我有

table                      table
          u_peso       |
item      0.50         |    item   item ew
item ew    null        |    item   item qw
item qw    null        |

这些项目在第二张表中有关系吗?所以他们会询问0.50

table                      table
          u_peso       |
item      0.50         |    item   item ew
item ew   0.50         |    item   item qw
item qw   0.50         |

1 个答案:

答案 0 :(得分:0)

使用SQL-Server,您可以执行以下操作:

UPDATE

update tp2
set
    u_peso = tp.upeso
from st tp
inner join table_peso_rel rel on
    rel.refA = tp.ref
inner join st tp2 on
    tp2.ref = rel.refB

不确定这是否100%正确,您的表格不是很清楚..