打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
exists,not exists总结
exists,not exists总结

exists,not exists总结


1 exists


SELECT * FROM anken_m WHERE EXISTS(
  SELECT  my_list_temp_m.sales_code
  FROM     my_list_temp_m
  WHERE   my_list_temp_m.sales_code=anken_m.sales_code)
 
说明:
1) 查询在anken_m表和my_list_temp_m表中都存在的sales_code。
2) sales_code是anken_m的主键,my_list_temp_m的外键。
注意:
1) 外层查询表anken_m是查询的对象。
2) 内层查询表my_list_temp_m是条件对象。
3) 内外层的查询表不能相同。
4) 作为关联条件的anken_m表不需要在内层查询FROM后添加。
5) my_list_temp_m.sales_code=anken_m.sales_code条件的左右顺序不影响查询结果。
 


 

2 not exists


SELECT * FROM anken_m WHERE NOT EXISTS(
  SELECT  my_list_temp_m.sales_code
  FROM     my_list_temp_m
  WHERE  my_list_temp_m.sales_code=anken_m.sales_code)
说明:
1) 查询在anken_m表中存在,但是在my_list_temp_m表中不存在的sales_code。
2) sales_code是anken_m的主键,my_list_temp_m的外键。
注意:
1) 外层查询表anken_m是查询的对象。
2) 内层查询表my_list_temp_m是条件对象。
3) 内外层的查询表不能相同。
4) 作为关联条件的anken_m表不需要在内层查询FROM后添加。
5) my_list_temp_m.sales_code=anken_m.sales_code条件的左右顺序不影响查询结果。
 

 

3 综合运用


UPDATE anken_m
SET(                   plan_type_code,          branch_name,         business_type_code)
  =(SELECT anken.plan_type_code,anken.branch_name,anken.business_type_code  
    FROM   anken  
    WHERE  anken.sales_code=anken_m.sales_code) 
WHERE EXISTS (  
    SELECT anken.sales_code  
    FROM   anken,my_list_temp_m  
    WHERE  my_list_temp_m.sales_code=anken.sales_code     
      AND  anken.sales_code=anken_m.sales_code     
)
说明:
1) 用一个表的记录数据更新另一个表的记录数据。
2) 用一个SQL语句进行批量更新。
2) sales_code是anken,anken_m的主键,my_list_temp_m的外键。
注意:
1) set 语句中的要被更新字段必须跟数据源字段一一对应,另外数据源查询中的条件必须限定一条记录。 也就是根据sales_code可以唯一确定anken的一条记录,和anken_m的一条记录,这样才能保证要被更新的记录和数据源记录的主键是相同的。
2) 根据WHERE EXISTS语句可以确定数据源记录的范围,也就是可以用anken表中哪些记录更新anken_m表。所以anken_m不需要在WHERE EXISTS语句中的FROM后添加。
 
 
实际生产中的例子:  
insert tbl_Log select * from tbl_log_Temp
   where not exists(
   select * from tbl_Log
   where tbl_Log.exch_id = tbl_log_Temp.exch_id AND
tbl_Log.iCurID = tbl_log_Temp.iCurID AND
tbl_Log.iFlag = tbl_log_Temp.iFlag AND
tbl_Log.iIdenty = tbl_log_Temp.iIdenty AND
tbl_Log.sOperatorName = tbl_log_Temp.sOperatorName AND
tbl_Log.iConnectStyle = tbl_log_Temp.iConnectStyle AND
tbl_Log.sIpAddress = tbl_log_Temp.sIpAddress AND
tbl_Log.iCommPortNo = tbl_log_Temp.iCommPortNo AND
tbl_Log.iCmdCode = tbl_log_Temp.iCmdCode AND
tbl_Log.sOpCmd = tbl_log_Temp.sOpCmd AND
tbl_Log.sOpTime = tbl_log_Temp.sOpTime AND
tbl_Log.iFinished = tbl_log_Temp.iFinished AND
tbl_Log.iErrorCode = tbl_log_Temp.iErrorCode
)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
sqlserver中判断表或临时表是否存在
【原创】利用Python开发一个配对股票分析的小程序(三)
Tushare
list of matlab code
量化交易-涨停回调短线策略
世界上最快的排序算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服