当前位置:主页>销售管理软件> 列表

sql server 中如何得到差集 找商品进销存管理软件

财务软件版1楼: 请问是否可以在不知道主键的情况下,用sql语句返回特定行数的语句。

例如,我想返回结果集中3~5行记录。但是不知道主键。我的想法是可以得到前5行和前2行,不知道可否在结果集中做差,从前5行中去掉前两行记录,就得到3~5行。

非常感谢!

2楼: select * from your_table where rowid in (2,3,4); 你是这个意思么? 试试看 是菜鸟 哈哈 不要笑话我啊 如仓库进销存管理软件

3楼: Top
in

4楼: SELECT TOP 5 * FROM TableName
WHERE 字段名 NOT IN
(SELECT TOP 2 字段名 FROM TableName)

5楼: 问题是不知道这个表的主键,所有无法用字段名通过not in判断。

6楼: 使用游标应该可以实现,你可以试试。

财务软件版7楼: 能一条sql语句实现吗?

8楼: 有没有完全相同的两条记录?
有没有唯一索引?

9楼: 如果有可以用来唯一标识一行的对象,也可以实现,不知道sqlserver中有没有?

10楼: 没有

11楼: 没有相同的记录,举例,我可以得到
select top 5 * from a
select top 2 * from a
我想结果从第一条sql的返回结果去掉第二条。

12楼: select top 2 * from tablename where not exists(select top 5 * from tablename) 如网络设备管理软件

13楼: to 饭前饭后:



好像不行。

财务软件版14楼: SiWeiLiuLang 的可以

15楼: SELECT TOP 2 *
FROM Table
WHERE (字段列表...) NOT IN (SELECT TOP 5 字段列表... FROM Table)

16楼: (字段列表...) 有语法错误,对于in或not in,只能使用一个字段。

17楼: 我正在试

18楼: select top 5 * from tablename b where not exists(select top 2 * from tablename a where a.field1=b.field1 and a.field2=b.field2...)

//where a.field1=b.field1 and a.field2=b.field2...这里要列出所有字段

19楼: To,飯前飯后:
這個方法也是不行的。

20楼: 如果实在一句无法办到的话,用游标等方法实现也可以吧,给个例子就行。

财务软件版21楼: 这个关键是看你有没有按照一个固定的顺序啊,如果有固定的顺序,那么就可以用TOP来取前面的多少什么的,或者有一个时间的话,那么也可以BETWEEN...AND来做,可以用一个系统的时间那么就很好取了

22楼: 用存储过程做一个table变量前面多一个id(identity(1,1)),用insert into 变量名 ( ''''...) select * from 表名
然后你喜欢那几条就用between ... and 就成了 如商品进销存管理软件

23楼: select * from msample where int_id in (select top 5 int_id from msample) and int_id not in(select top 2 int_id from msample)