sql语句不执行

littlebirds 2014-04-17 03:21:13
delete from (select * from sys_barcode_1d_y union all select * from sys_barcode_1d_y_bak union all select * from FG_hi_cust_In where hi_no like 'ESC%')a where packageno='xxx'

sql语句不执行,请问是什么原因?
...全文
253 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 版主 2014-04-18
  • 打赏
  • 举报
回复
三张表分开删除,分开写成3条语句。
twtiqfn 2014-04-18
  • 打赏
  • 举报
回复
搞程序很痛苦的,不知道哪出错就解决不了了
中国风 2014-04-18
  • 打赏
  • 举报
回复
分开3句语句删除3表 --经常这样操作可 建视图在视图上建触发器
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
delete FROM sys_barcode_1d_y where packageno='xxx delete FROM sys_barcode_1d_y_bak where packageno='xxx' delete FROM FG_hi_cust_In WHERE hi_no LIKE 'ESC%' and packageno='xxx'
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 16 楼 DBA_Huangzj 的回复:
三个delete,加上where条件,有就删没有就不删
不是很明白意思,求例子。
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
三个delete,加上where条件,有就删没有就不删
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 12 楼 DBA_Huangzj 的回复:
你是不是要同时删除3个表的数据?除了触发器和级联删除,delete无法一次删多个表
主要是数据可能存在这3张表的某一张表中,如果要删除怎么写?
KeepSayingNo 2014-04-17
  • 打赏
  • 举报
回复
delete删除只能针对单张表
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
你的union是什么意图?把这些数据新建到一个表然后删除某些数据?如果是: select * into T from ( SELECT * FROM sys_barcode_1d_y UNION ALL SELECT * FROM sys_barcode_1d_y_bak UNION ALL SELECT * FROM FG_hi_cust_In WHERE hi_no LIKE 'ESC%')a delete from a where xxxxx
好像也不行。
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
你是不是要同时删除3个表的数据?除了触发器和级联删除,delete无法一次删多个表
KeepSayingNo 2014-04-17
  • 打赏
  • 举报
回复
把三个表union起来一起删数据库会报错。 2楼的方法使用CTE也还是说“视图 'cte' 不可更新,因为其定义中包含 UNION 运算符。”
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
你的union是什么意图?把这些数据新建到一个表然后删除某些数据?如果是: select * into T from ( SELECT * FROM sys_barcode_1d_y UNION ALL SELECT * FROM sys_barcode_1d_y_bak UNION ALL SELECT * FROM FG_hi_cust_In WHERE hi_no LIKE 'ESC%')a delete from a where xxxxx
就是说只能先生成临时表再删除?
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
你的union是什么意图?把这些数据新建到一个表然后删除某些数据?如果是: select * into T from ( SELECT * FROM sys_barcode_1d_y UNION ALL SELECT * FROM sys_barcode_1d_y_bak UNION ALL SELECT * FROM FG_hi_cust_In WHERE hi_no LIKE 'ESC%')a delete from a where xxxxx
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
额,忘了union,那你是想一次性删除3个表?这是不可能的哦
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
2005以上就用2楼的 [quote=引用 4 楼 lazygc520 的回复:] [quote=引用 3 楼 DBA_Huangzj 的回复:] 语法问题。。。
按2#的写法?[/quote][/quote] 是2005
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
用这个:

;
WITH    cte
          AS ( SELECT   *
               FROM     sys_barcode_1d_y
               UNION ALL
               SELECT   *
               FROM     sys_barcode_1d_y_bak
               UNION ALL
               SELECT   *
               FROM     FG_hi_cust_In
               WHERE    hi_no LIKE 'ESC%'
             )
    DELETE  FROM cte
    WHERE   packageno = 'xxx'
View 'cte' is not updatable because the definition contains a UNION operator.
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
2005以上就用2楼的
引用 4 楼 lazygc520 的回复:
[quote=引用 3 楼 DBA_Huangzj 的回复:] 语法问题。。。
按2#的写法?[/quote]
littlebirds 2014-04-17
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
语法问题。。。
按2#的写法?
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
语法问题。。。
發糞塗牆 2014-04-17
  • 打赏
  • 举报
回复
用这个:

;
WITH    cte
          AS ( SELECT   *
               FROM     sys_barcode_1d_y
               UNION ALL
               SELECT   *
               FROM     sys_barcode_1d_y_bak
               UNION ALL
               SELECT   *
               FROM     FG_hi_cust_In
               WHERE    hi_no LIKE 'ESC%'
             )
    DELETE  FROM cte
    WHERE   packageno = 'xxx'
加载更多回复(1)

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧