sqldeletenotin
‘壹’ 现在在sql里使用delete in无法删除了.为什么
现在在SQL里使用delete in无法删除了.为什么
如果只针对表进行删除,则一样.
但是如果需要联合其他表,则需要使用from
例如
delete tb1 from tb1 m where id in (select id from tb2)
‘贰’ sql not in问题
NOT IN速度当然很慢,因为这样会存在两个全表检索的情况,使用NOT EXISTS会快很多。
delete from t_b where exists (select 1 from t_b a where isnull(a.cost,0) > isnull(t_b.cost,0) and a.cost <> t_b.cost)
DELETE FROM CIDZ WHERE EXISTS (SELECT 1 FROM CIDZ A WHERE A.ID > CIDZ.ID)
---------这个删除之后,会只剩下这个表中ID最大的一行,没有别的连接条件了么?如果这么已删除,表中只剩下一行了,我觉得你的意思是不是只留下每个地址分组后ID最大的一行啊?
‘叁’ sql删除表中某些行数据
删除除白沙外的所有行数据:
delete from 表名 where 字段名 <>'白沙'
删除除白沙、北京外的数据:
delete from 表名 where 字段名 not in('白沙','北京')
或者
delete from 表名 where 字段名 <>'白沙' and 字段名<>'北京'
‘肆’ sql删除重复数据且只保留一条
这个简单,凡是重复的保留一个就可以了,是这个意思吧。
那么就是 select min(id) from table group by title这样的就能查出来每个title的最小的id,就算有重复的,也能显示出来最小的id,如果没有重复,那么这条语句也会得到唯一的id
然后where id not in(上面的语句)
这样就可以找到所有的不在上面语句朝招范围内的语句,比如id为2732,2733,2734这三条,那么上面的语句查出来的id就是2732,下面这个not in能查出来的就是2733和2734,然后再用delete删除就可以了。
当然min(id)也可以用max(id)效果是一样的,只是保留的id变成了2734
不过这里有一个问题,那就是title字段重复,整个行都重复吗?如果能确认整行重复,那么这条语句基本没问题,如果不能确定,那么就还需要再考虑才可以。
‘伍’ sql中如何删除一个表中重复的记录
sql中删除一个表中的重复记录可以采用如下步骤:
1、把a_dist表的记录用distinct去重,结果放到临时表中。
select distinct * into #temp from a_dist;
2、把a_dist表的记录全部删除。
delete from a_dist;
3、把临时表中的数据信息导进到a_dist表中,并删除临时表。
insert into a_distselect * from #temp;
drop table #temp;
(5)sqldeletenotin扩展阅读:
SQL (结构化查询语言)是用于执行查询的语法。在数据库上执行的大部分工作都由 SQL 语句完成。SQL 语言包含用于更新、插入和删除记录的语法。
增删改查指令构成了 SQL 的 DML 部分:
SELECT- 从数据库表中获取数据
UPDATE- 更新数据库表中的数据
DELETE- 从数据库表中删除数据
INSERT INTO- 向数据库表中插入数据
‘陆’ SQL数据库中删除一个表在另一个表中不存在的记录
1. 采用not exists 执行速度快delete from T_AD where not exists (select 1 from T_AD_PLAY where T_AD.N_CODE =T_AD_PLAY.N_CODE ) 2. 采用not in 执行速度慢Delete From T_AD Where N_AD Not In(Select N_AD From T_AD_PLAY)
‘柒’ SQL怎么用DELETE删除多条数据
1、首先,选择数据库。
‘捌’ sql语句查询的时候not in 里面查询为空 则整个都为空 求高手
select distinct(u.UserGuid)
from ComPany as c,
Users as u
where u.UserGuid not in (select c.UserGuid from ComPany as c,Users as u where DATEDIFF(month,c.DengTime,'2012-03-01')=0 and c.UserGuid=u.UserGuid group by c.UserGuid)
and u.IsDelete!='2' and u.UserType='2'
首先:确定下面两个查询有值
1:
select c.UserGuid from ComPany as c,Users as u where DATEDIFF(month,c.DengTime,'2012-03-01')=0 and c.UserGuid=u.UserGuid group by c.UserGuid
2:
select distinct(u.UserGuid)
from ComPany as c,
Users as u
where u.IsDelete!='2' and u.UserType='2'
‘玖’ 那位高手帮忙看看下面这个SQL语句怎么优化。 DELETE * FROM t1 WHERE GDID not in ( select max(GDID) fro
不要用not in, 用not exists,这样会快很多
你把语句都贴出来
not exists不能用 column not exits这样的写法,要把你的gdid字段传到里面的select里面做等式