读书人

数据库查询(-各位大侠了)

发布时间: 2011-12-27 22:22:54 作者: rapoo

数据库查询(求助-在线等各位大侠了)
问题是这样的, 数据库中 有几万条数据 ,以上是数据编号,但不是主键
00001
00002
00003
00004
00005

00007
00008
00009

00011
...
以上数据 生成时是连续的,由于删除了数据,所以就会产生断号,就像会计制单断号一样,现在要把那些不存在的号查询出来,要怎么查,用Linq,sql 不限……

[解决办法]

C# code
            List<int> list = new List<int>() {1,3,5,6,7,8,10 };            var query = Enumerable.Range(list.Min(), list.Max() - list.Min()+1).Except(list);            query.ToList().ForEach(p => Console.WriteLine(p));
[解决办法]
还真想不出好的方法
就是集合的减法,但实现基本和上边的一样
[解决办法]
探讨

引用:
还真想不出好的方法
就是集合的减法,但实现基本和上边的一样

是啊, 看似很简单的问题,还真 不好解决
虽然大家没有给出解决方法, 我知道 大家还是在帮我想这个问题, 辛苦大家啦!

[解决办法]
SQL:select 编号 from tableName
根据上面的sql查找出来编号,放到一个集合当中,如上面方法进行相应的处理不就完了么
[解决办法]
帮LZ顶下
[解决办法]
SQL code
CREATE TABLE TB(col CHAR(5))INSERT dbo.TBSELECT '00001' UNION ALLSELECT '00002' UNION ALLSELECT '00003' UNION ALLSELECT '00004' UNION ALLSELECT '00005' UNION ALLSELECT '00007' UNION ALLSELECT '00008' UNION ALLSELECT '00009' UNION ALLSELECT '00011';DECLARE @n AS INTSELECT @n=MAX(col) FROM dbo.TB;WITH cte AS(    SELECT 1 AS n    UNION ALL    SELECT n+1 FROM cte WHERE n<@n)SELECT  RIGHT('0000' + CONVERT(VARCHAR(5), n), 5)FROM    cteWHERE   n NOT IN ( SELECT   col                   FROM     dbo.TB )DROP TABLE dbo.TB/*---------0000600010(2 行受影响)*/ 

读书人网 >.NET

热点推荐