MSSQL不能有order by之后再用unite

原创 2013年12月04日 10:16:12

问题:
查询信息表,信息表有两个字段————“状态state” “时间date”
要求:查询所有不同状态的最新时间数据,例如,01,02,03时间是最新的,两个条件
解决办法:
查询01状态的所有数据按照降序排列,获取第一个,
查询02状态的所有数据按照降序排列,获取第一个,
查询03状态的所有数据按照降序排列,获取第一个,
然后将三个使用Unit合并

 

代码:

select top 1 m.* from mon_rad_monreportinfo m where m.state='01' order by m.mon_date desc
union
select top 1 n.* from mon_rad_monreportinfo n where n.state='01' order by n.mon_date desc
union
select top 1 t.* from mon_rad_monreportinfo t where t.state='01' order by t.mon_date desc

 运行上面的代码报错,出现语法错误

 

修改之后的代码

select a.* from (select top 1 m.* from mon_rad_monreportinfo m where m.state='01' order by m.mon_date desc) a
union
select b.* from (select top 1 n.* from mon_rad_monreportinfo n where n.state='01' order by n.mon_date desc) b
union
select c.* from (select top 1 t.* from mon_rad_monreportinfo t where t.state='01' order by t.mon_date desc) c

 备注:查询虚拟表一定要有“别名”,否则会报错

Oracle sql 优化:增加order by 慢 去掉之后就变快 解决办法

一 问题背景: 1.oracle的版本的为11g 2.数据是由生产库导入部分数据至开发库 3.表为范围分区表 4.order by 的字段为分区表的分区字段 5.数据记录大概有一千万; 5...

sql server 解决union all之后 order by失效的问题

注意关键点在TOP 99.999999 PERCENT   SELECT * FROM ( SELECT TOP 99.999999 PERCENT ...

SQL语句中,为什么where子句不能使用列别名,而order by却可以?

当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.    例如下面的SQL语句: select id, (c1 + c2) as s from t1  w...

order by居然不能直接在union子句中使用

今天一个群中的兄弟问一个问题,说有一个表,表中有很多数据,其中有个字段type,希望从表中随机取出10条记录,其中有5条type=1另外5条type=0,比如下图这样: 我一想,这还不简单,按照要...
  • studyzy
  • studyzy
  • 2013年09月10日 14:21
  • 1687

关于order by后面不能使用参数传递值问题。

今天,在小程序中做到排序功能时,莫名抛出了一个奇怪的错误。'@P3' 附近有语法错误。代码如下: @Override public List getUsers(int index,StringB...
  • sb1ue
  • sb1ue
  • 2012年10月30日 21:18
  • 2842

将hotel和Order数据倒入MSSQL进行查询

Vicky的TAG词关联有了初步的成果,得到了各个酒店关联tag的情况,其信息保存在了Hotel这个Sheet上。如图: 同时酒店的预订量保存在了Order这个sheet上。如图: 现在希...

activiti5.9修复mysql order by 排序bug

  • 2013年04月07日 15:42
  • 1.13MB
  • 下载

MSSQL注入利用Group by&having猜表名和字段名

转自灵魂BLOG!! lcx和剑心等大牛在06年的时候就已经在用这种语法了,而我等小辈到最近才领略到,惭愧惭愧...... 手头暂时没有注入点测试,就先以我机器上的MSSQL做实验吧。 下面...
  • god_7z1
  • god_7z1
  • 2011年09月06日 13:44
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSSQL不能有order by之后再用unite
举报原因:
原因补充:

(最多只允许输入30个字)