以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求指点一个SQL语句  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173154)

--  作者:hitzfeld
--  发布时间:2021/11/17 1:49:00
--  求指点一个SQL语句
SE/ECT * FROM 表1 left outer join 表2 on 表1.fvoucherID =表2.fvoucherID where fperiod = 11
能够得到正确的值,但是改为delete 则报错,查了好多资料都是mysql的,mysql的方法在mssql都无效,改不好。


--  作者:zhutangxin
--  发布时间:2021/11/17 3:55:00
--  
试试, sql server delete 后面没有 *

De lete f rom 表1 where id in (        -- id 是你表1的唯一识别列,如单列主键
s elect 表1.id 表1 left outer join 表2 on 表1.fvoucherID =表2.fvoucherID where fperiod = 11
)

--  作者:有点蓝
--  发布时间:2021/11/17 8:47:00
--  
贴出delete语句啊
--  作者:hitzfeld
--  发布时间:2021/11/17 15:21:00
--  
蓝老师好,de/ete语句很简单啊?就是把SE/ECT * 换成 delete
de/ete Fr0M 表1 left outer join 表2 on 表1.fvoucherID =表2.fvoucherID where fperiod = 11

错误信息是 left左右存在语法错误。

--  作者:有点蓝
--  发布时间:2021/11/17 16:00:00
--  
删除表1还是表2啊

de/ete a  Fr0M 表1 as a 
left join 表2 as b on a.fvoucherID =b.fvoucherID where fperiod = 11
--  作者:hitzfeld
--  发布时间:2021/11/17 18:40:00
--  
蓝老师,是联动删除,表1和表2都存在fvoucherID,需要删除符合表1的fperiod = 11的全部记录,同时删除表2对应的记录。
--  作者:hitzfeld
--  发布时间:2021/11/18 5:26:00
--  
zhutangxin老师您好,您的代码也是报left附近存在错误。
--  作者:有点蓝
--  发布时间:2021/11/18 9:07:00
--  
这种用法我测试没有问题,一条sql语句只能删除一个表的数据,如果要删除2个表需要写2条语句,分开删除

另外自己把文字改了,注意改回来:de/ete a  Fr0M