简单问题不会做

九斤半 2007-10-12 09:51:19
CREATE TABLE A(ID NCHAR(5),QTY INT)
INSERT A(ID,QTY) SELECT 'A0001',457
INSERT A(ID,QTY) SELECT 'A0002',789
INSERT A(ID,QTY) SELECT 'A0003',145
INSERT A(ID,QTY) SELECT 'A0002',877
INSERT A(ID,QTY) SELECT 'A0003',123
INSERT A(ID,QTY) SELECT 'A0002',756
INSERT A(ID,QTY) SELECT 'A0007',999
INSERT A(ID,QTY) SELECT 'A0006',577
INSERT A(ID,QTY) SELECT 'A0005',478

--SELECT * FROM A
--SELECT DISTINCT ID FROM A
SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)


-- 用时2秒
SELECT A.* FROM A JOIN (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))I ON A.ID=I.ID
-- 要求一语句,得到除TOP 2 ID 以外所有ID的明细记录,如何做?


DROP TABLE A
...全文
246 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
wangtiecheng 也是这意思。想多了要注意休息,
回复老出不来,唉新版问题还是我机器的问题?江民对它感兴趣
dawugui 2007-10-12
  • 打赏
  • 举报
回复
看了看,还是not in 的好.
我用过两表各20多万的not in 的操作,是oracle 数据库,服务器配置较高.花时间3-5分钟.
如果非要整个几百上千万的记录来not in,那就爽歪歪了.
九斤半 2007-10-12
  • 打赏
  • 举报
回复
不知不为过,不学就是错! 先回帖,没注意看到...谢谢大家。
九斤半 2007-10-12
  • 打赏
  • 举报
回复
:)

wgzaaa的MS可以了,我一直在想如何得到其余的ID记录集,没这样想过。
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
left join要比not in 效率高

在Access中,这一点体现的尤其明显,用not in 数据量一大,就没有响应了。
九斤半 2007-10-12
  • 打赏
  • 举报
回复
呵呵,是啊,关联很快,就是不知道如何得到除此TOP 2 ID以外的ID的明细记录



SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)) -- 这一句是此TOP 2 ID的记录,OK。

????????????????????????????????????????????????????? -- 另一句不会写。
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
--try
SELECT A.* FROM A left JOIN (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))I ON A.ID=I.ID where i.id is null
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
不用not in 就用关联,如:

select A.*
from A
left join B on a.id=b.id
where b.id is null
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
这样不行?
SELECT A.* FROM A where id not in (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))
九斤半 2007-10-12
  • 打赏
  • 举报
回复
不知不为过,不学就是错!

我要求除此TOP 2 ID以外的ID的明细记录,

not in 我用过了,太慢。
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
CREATE TABLE A(ID NCHAR(5),QTY INT)
INSERT A(ID,QTY) SELECT 'A0001 ',457
INSERT A(ID,QTY) SELECT 'A0002 ',789
INSERT A(ID,QTY) SELECT 'A0003 ',145
INSERT A(ID,QTY) SELECT 'A0002 ',877
INSERT A(ID,QTY) SELECT 'A0003 ',123
INSERT A(ID,QTY) SELECT 'A0002 ',756
INSERT A(ID,QTY) SELECT 'A0007 ',999
INSERT A(ID,QTY) SELECT 'A0006 ',577
INSERT A(ID,QTY) SELECT 'A0005 ',478

--SELECT * FROM A
--SELECT DISTINCT ID FROM A
SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)


-- 用时2秒
SELECT *
from A as t
where id not in (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))
-- 要求一语句,得到除TOP 2 ID 以外所有ID的明细记录,如何做?


DROP TABLE A
dawugui 2007-10-12
  • 打赏
  • 举报
回复
啥意思?
内容概要:本文围绕“考虑用户侧柔性负荷的社区综合能源系统优化调度”开展研究,提出一种基于Matlab的优化调度模型,旨在提升社区综合能源系统的运行效率与能源利用水平。研究重点聚焦于用户侧柔性负荷的可调节特性,将其纳入日前优化调度框架中,通过构建电、热、气等多能源协同的数学模型,实现对多种能源形式的联合优化调度。文中系统阐述了可转移负荷、可中断负荷等柔性负荷类型的建模方法,并结合光伏发电、储能系统等分布式能源的出力特性,建立了以系统综合运行成本最小化为目标的优化模型,采用Matlab进行仿真求解。算例分析结果表明,所提出的调度方法在削峰填谷、降低用户用能成本、提高可再生能源就地消纳能力等方面具有显著效果。; 适合人群:具备一定电力系统或综合能源系统基础知识,熟悉Matlab编程,从事综合能源系统、智能电网、需求响应等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于社区级综合能源系统的日前优化调度方案设计;②研究用户侧柔性负荷参与电网互动的调控策略;③为实现低碳、高效、经济的能源管理提供技术参考与仿真工具支持。; 阅读建议:建议读者结合Matlab代码进行实践操作,重点关注柔性负荷建模与优化求解部分,可进一步拓展至多时间尺度调度、不确定性场景分析等方向。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧