sql server 语句更新字段,存在什么错误啊?

UPDATE[ksfscfx].[dbo].[ksf_mes_confirmedShift]SET[工作中心]=(select名称fromksf_mes_shiftInf... UPDATE [ksfscfx].[dbo].[ksf_mes_confirmedShift]
SET [工作中心] =
(select 名称 from ksf_mes_shiftInfo a where a.代码 in (select reverse(substring(reverse(计划工序),1, 2))) from ksf_mes_confirmedShift )
这段语句提示说from附近有错误,咋整啊,新手
展开
 我来答
badkano
2013-11-13 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885374
团长

向TA提问 私信TA
展开全部
UPDATE [ksfscfx].[dbo].[ksf_mes_confirmedShift]
   SET [工作中心] = b.名称 from [ksfscfx].[dbo].[ksf_mes_confirmedShift] a inner join
ksf_mes_shiftInfo b on b.代码=reverse(substring(reverse(a.计划工序),1, 2)))
where b.代码 in
(select reverse(substring(reverse(计划工序),1, 2))) from ksf_mes_confirmedShift)

这样试试,不过执行前最好先备份一下ksf_mes_confirmedShift表

tim_spac
2013-11-13 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2027万
展开全部

SQL格式化能有效地排查错误:
 ==>

UPDATE [ksfscfx].[dbo].[ksf_mes_confirmedShift] SET
    [工作中心] = (
        select 名称
        from ksf_mes_shiftInfo a
        where a.代码 in (
            select reverse(substring(reverse(计划工序),1, 2)))
            from ksf_mes_confirmedShift )

1. “select reverse(substring(reverse(计划工序),1, 2))) from ksf_mes_confirmedShift”

    这一部分左右括号不匹配,似乎应改为:


UPDATE [ksfscfx].[dbo].[ksf_mes_confirmedShift] SET
     [工作中心] = (
             select 名称
             from ksf_mes_shiftInfo a
             where a.代码 in (
                 select reverse(substring(reverse(计划工序),1, 2))
                 from ksf_mes_confirmedShift 
                )
            )

2.  子查询部分的结果集非单一记录,不能直接为[工作中心]赋值

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
2013-11-13 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:3012万
展开全部
UPDATE [ksfscfx].[dbo].[ksf_mes_confirmedShift]
   SET [工作中心] = 
   (select 名称 from ksf_mes_shiftInfo a where a.代码 in (select reverse(substring(reverse(计划工序),1, 2))
from ksf_mes_confirmedShift))

试下

更多追问追答
追问
把 in 改成 = 号,返回值不止一个,这段代码该怎么修改?
追答
??什么意思,我就看你的括号写错了,什么in ?where a.代码 in这个?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxd9915
2013-11-13 · TA获得超过299个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:214万
展开全部
我不验证你整句语句的准确性,在in (select reverse(substring(reverse(计划工序),1, 2))) from ksf_mes_confirmedShift )中,括号位置肯定错了,应该为:
in (select reverse(substring(reverse(计划工序),1, 2)) from ksf_mes_confirmedShift ))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风飞110
2013-11-13 · 超过14用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:29.7万
展开全部
select 名称 from ksf_mes_shiftInfo a where
会出现多个值吧
追问
a 是别称啊,这有影响吗?
追答
说错了,得到的名称你确定是一个值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式