以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求一高效函数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=73122)

--  作者:supwork
--  发布时间:2015/8/12 21:34:00
--  求一高效函数

出入_主表  出入_明细表   关联字段 为 GUID

 

要求写一函数 dellOneRecord

调用方式为:

dellOneRecord("出入_主表", "出入_明细表","GUID")

 

达到的效果 是:删除主有有记录,但明细表无记录的主表数据 ,删除明细表有数据记录,但主表无记录的数据。

 

 


--  作者:大红袍
--  发布时间:2015/8/12 21:37:00
--  

 delete fr om 主表 where guid not in (select guid fr om 子表)

 

 delete fr om 子表 where guid not in (select guid fr om 父表)


--  作者:supwork
--  发布时间:2015/8/19 11:10:00
--  

Dim cmda As New SQLCommand
cmda.ConnectionName= gs_strActiveConn
cmda.CommandText = "delete fr om {订单_主表} where [GUID] not In (Select [GUID] fr om {订单_明细表})"
cmda.ExecuteNonQuery

Dim cmdb As New SQLCommand
cmdb.ConnectionName= gs_strActiveConn
cmdb.CommandText = "delete fr om {订单_明细表} where [GUID] not In (Select [GUID] fr om {订单_主表})"
cmdb.ExecuteNonQuery

 

怎么这样在命令窗口执行没有生效呢

[此贴子已经被作者于2015/8/19 11:10:15编辑过]

--  作者:supwork
--  发布时间:2015/8/19 11:19:00
--  

delete fr om 订单_主表 where GUID not In (Select GUID fro m 订单_明细表)

 

这代码在数据库中调试都没有效果

 


--  作者:大红袍
--  发布时间:2015/8/19 11:28:00
--  
语句没有问题。不可能没效果,满足条件的肯定会删除。
--  作者:supwork
--  发布时间:2015/8/19 11:56:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:23525.png
图片点击可在新窗口打开查看
数据库中执行,没有删除行

 

如果去掉NOT 则有执行了

 

[此贴子已经被作者于2015/8/19 11:56:44编辑过]

--  作者:大红袍
--  发布时间:2015/8/19 12:10:00
--  

你要对比数据啊。

 

0行受影响说明没有满足条件的数据啊,也就是之前删除完了啊