UNION 与ORDER BY 结合出错
/*
select 1 as CurMonth,GETDATE() as CurDay INTO TEST_DISP
delete TEST_DISP
insert TEST_DISP values(11,'2003-11-01')
insert TEST_DISP values(12,'2003-12-01')
insert TEST_DISP values(1,'2004-1-01')
insert TEST_DISP values(2,'2004-2-01')
insert TEST_DISP values(3,'2004-3-01')
insert TEST_DISP values(4,'2004-4-01')
insert TEST_DISP values(5,'2004-5-01')
Select * from TEST_DISP
*/
我的查询要求是: 将2003年最后一天和2004年的记录按时间顺序输出:
我的做法如下
select s.* from
(SELECT top 1 CurMonth,CurDay FROM TEST_DISP where CurDay< '2004-01-01' order by CurDay desc
UNION
SELECT CurMonth,CurDay FROM TEST_DISP where CurDay>= '2004-01-01' ) s order by CurDay
结果发现,2003年的记录总是2003-11-01那条,也就是order by CurDay desc没起作用,
实际不用排序或用order by CurDay 结果是一样,总是11月那条,为什么为这样?
如何实现这个查询? 前提是不需要中间表
相关推荐
MySQL中union和order by同时使用的实现方法
下面小编就为大家带来一篇MySQL中union和order by同时使用的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Access和SQLSever注入
Access和SQLSever注入,各位可以参考看看,里面的记录的流程!
MySQL如何使用union all获得并集排序
主要介绍了MySQL如何使用union all获得并集排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
sql warning报错出错信息说明
错误 严重度 描述(消息文本) 1 10 上次升级的版本日期: 10/11/90. 21 10 警告:严重错误 %1! 发生于 %2!。请记下错误和时间,然后与系统管理员联系。 102 15 在 ''%1!'' 附近有语法错误。 103 15 以 ''%2!'' 开头的 %1! 太长。最大长度为 %4!。 104 15 如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。 105 15 字符串 ''%1!'' 之前有未闭合的引号。 106 16 查询中的表名太多。允许的最大数目为 %1!。 ........... .............
mysql实用技巧之比较两个表是否有不同数据的方法分析
本文实例讲述了mysql比较两个表是否有不同数据的方法。分享给大家供大家参考,具体如下: 在数据迁移中,我们经常需要比较两个表,以便在一个表中标识另一个表中没有相应记录的记录。 例如,我们有一个新的数据库,其架构与旧数据库不同。我们的任务是将所有数据从旧数据库迁移到新数据库,并验证数据是否正确迁移。要检查数据,我们必须比较两个表,一个在新数据库中,一个在旧数据库中,并标识不匹配的记录。 假设有两个表:t1和t2。使用以下步骤比较两个表,并确定不匹配的记录,按着常用的思路就是,我们先查t1,完事呢,拿着数据结果集来循环,一条一条的去另一张表中查询,能查到数据,就是正确的,查询不到,就是数据有丢失


疑难问题

