新足迹

 找回密码
 注册

精华好帖回顾

· 看看今天的大碗菜 (2009-4-16) tinanakoo · 不惑之惑——自言自语 (2013-7-6) hr6970
· 参赛-东北人的春节,小鸡炖蘑菇 + 凉拌拉皮 (2007-2-21) powermao · 驾驶新手如何一次通过路考(菜鸟必读) (2006-6-29) 新风雨
Advertisement
Advertisement
查看: 1253|回复: 4

求助下,SQL选择一段没有的数据 [复制链接]

发表于 2011-9-6 00:25 |显示全部楼层
此文章由 Limitless 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Limitless 所有!转贴必须注明作者、出处和本声明,并保持内容完整
把asx全部股票15年 till today 的end of day数据都放进mysql数据库了,格式是metastock的,大概如下code,date,open,high,low,close,volume。
code就是股票代码,date格式是20110101这样的格式,字段格式也是8位的date。
现在问题是有些股票改名了,有些不存在了,比如股票代码AAA只有到1999年底的数据。我想把所有在一段时间之后比如20110101之后就没有数据的股票代码显示出来,自己想了两个,不过都不管用:SELECT distinct code FROM asx where code not like (select distinct code from `asx` WHERE date>20110101),返回0行。

SELECT DISTINCT code
FROM asx
WHERE NOT
EXISTS (

SELECT DISTINCT code
FROM  `asx`
WHERE DATE >20110101
)

这个把所有的distinct code都返回了……
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-9-6 00:41 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
SELECT distinct code FROM asx where code  not in (select distinct code from `asx` WHERE date>20110101)

发表于 2011-9-6 00:49 |显示全部楼层
此文章由 Limitless 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Limitless 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-9-5 23:41 发表
SELECT distinct code FROM asx where code  not in (select distinct code from `asx` WHERE date>20110101)


很奇怪,执行出来还是所有的distinct code都出来了……

发表于 2011-9-6 00:51 |显示全部楼层
此文章由 Limitless 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Limitless 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Limitless 于 2011-9-5 23:49 发表


很奇怪,执行出来还是所有的distinct code都出来了……


解决了……原来2011年的数据忘了导入了…… - -! not exists 和not in都对

参与宝库编辑功臣

发表于 2011-9-7 09:57 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lz你not exist 的代码不对, 因为subquery和主query没有任何联系,需要加上a.code=b.code, 金刚的也对in也可以

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部