首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL:两表查询和删除,这么写有有关问题吗

2013-09-28 
SQL:两表查询和删除,这么写有问题吗?有两个表,一个订单表tborder,另一个订单详细表tbitem订单表tborder主

SQL:两表查询和删除,这么写有问题吗?
有两个表,一个订单表tborder,另一个订单详细表tbitem
订单表tborder主键为order_id,订单详细表tbitem的主键为order_id+item_id。
现发现订单表中有的order_id没有出现在订单详细表中。
为了整合数据,要把这些order_id找出来并删除。
SELEC * FROM tborder a WHERE a.order_id not in (SELECT b.order_id FROM tbitem b)
DELETE FROM tborder a WHERE a.order_id not in (SELECT b.order_id FROM tbitem b)

这两条SQL语句有什么问题吗?还有什么更好的SQL吗?
望指教。。
[解决办法]



SELEC * FROM tborder a WHERE not exists(
  SELECT top(1)1 from tbitem b where a.order_id=b.order_id
)
DELETE FROM tborder a WHERE  not exists(
  SELECT top(1)1 from tbitem b where a.order_id=b.order_id
)

[解决办法]

--查询
SELECT * 
FROM tborder
WHERE order_id not in (SELECT order_id FROM tbitem)
--删除
DELETE FROM tborder
WHERE order_id not in (SELECT order_id FROM tbitem)


或者:
SELECT * 
FROM tborder a
WHERE not exists(SELECT 1 FROM tbitem b where a.order_id=b.order_id)

DELETE FROM tborder a
WHERE not exists(SELECT 1 FROM tbitem b where a.order_id=b.order_id)

热点排行