双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

UNION 与ORDER BY 结合出错

bluedrumbeat bluedrumbeat 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
测试数据如下
/*
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同时使用的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38686187

Access和SQLSever注入

Access和SQLSever注入,各位可以参考看看,里面的记录的流程!

季海晨

MySQL如何使用union all获得并集排序

主要介绍了MySQL如何使用union all获得并集排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

weixin_38628150

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!。 ........... .............

stoberry

mysql实用技巧之比较两个表是否有不同数据的方法分析

本文实例讲述了mysql比较两个表是否有不同数据的方法。分享给大家供大家参考,具体如下: 在数据迁移中,我们经常需要比较两个表,以便在一个表中标识另一个表中没有相应记录的记录。 例如,我们有一个新的数据库,其架构与旧数据库不同。我们的任务是将所有数据从旧数据库迁移到新数据库,并验证数据是否正确迁移。要检查数据,我们必须比较两个表,一个在新数据库中,一个在旧数据库中,并标识不匹配的记录。 假设有两个表:t1和t2。使用以下步骤比较两个表,并确定不匹配的记录,按着常用的思路就是,我们先查t1,完事呢,拿着数据结果集来循环,一条一条的去另一张表中查询,能查到数据,就是正确的,查询不到,就是数据有丢失

weixin_38551187
评论 8
收藏 已收藏
分享
返回顶部
bluedrumbeat
疑难问题 22,298 成员 121,727 内容