相关疑难解决方法(0)

SQL查询 - 在UNION中使用Order By

如何从两个表中提取数据时以编程方式对联合查询进行排序?例如,

SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1
Run Code Online (Sandbox Code Playgroud)

引发异常

注意:这是在MS Access Jet数据库引擎上尝试的

sql sorting union ms-access sql-order-by

83
推荐指数
7
解决办法
18万
查看次数

SQL:在使用Order By的UNION查询中使用Top 1

我有一张桌子如下

Rate Effective_Date
---- --------------
5.6  02/02/2009
5.8  05/01/2009
5.4  06/01/2009
5.8  12/01/2009
6.0  03/15/2009
Run Code Online (Sandbox Code Playgroud)

我应该找到对当前日期和之后有效的所有费率.因此,为了获得当前有效率,我使用

SELECT TOP 1 * from table 
where effective_date < '05/05/2009' 
order by effective date desc
Run Code Online (Sandbox Code Playgroud)

查询当前日期之后的费率

SELECT * from table 
where effective_date > '05/05/2009'
Run Code Online (Sandbox Code Playgroud)

要结合这两个结果,我使用union作为

SELECT TOP 1 * from table 
where effective_date < '05/05/2009' 
order by effective date desc

UNION

SELECT * from table 
where effective_date > '05/05/2009'
Run Code Online (Sandbox Code Playgroud)

预期的结果是

Rate Effective Date
---- --------------
5.8  05/01/2009
5.4  06/01/2009
5.8  12/01/2009
6.0  03/15/2009
Run Code Online (Sandbox Code Playgroud)

但我得到了实际的结果 …

sql-server union sql-order-by

18
推荐指数
3
解决办法
3万
查看次数

SQL:使用UNION,ORDER BY和LIMIT进行SELECT

我得到的错误是ORDER by应该在UNION之后出现,但是我希望这些错误在订购之前被排序为一个然后限制为10.

SELECT * 
  FROM (SELECT time, x, y, z 
          FROM db 
         WHERE time >= now 
      ORDER by time, x
       UNION 
       SELECT time, x, y, z 
         FROM db 
        WHERE time < now 
     ORDER by time, x) 
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我希望你明白,我正在努力做什么,可以帮助我;-)

sql sqlite union sql-order-by limit

5
推荐指数
4
解决办法
4万
查看次数

SQL UNION和ORDER BY

我有一个令人讨厌的SQL语句似乎很简单,但它看起来很糟糕.我希望sql返回带有userdata的结果集,以便某个用户是结果集中的第一行,如果用户的emailaddress在公司表中.

我有这个SQL返回我想要的但我觉得它看起来很糟糕:

select 1 as o, * 
from Users u
where companyid = 1
and email = (select email from companies where id=1)
union 
select 2 as o, * 
from Users u
where companyid = 1
and email <> (select email from companies where id=1)
order by o
Run Code Online (Sandbox Code Playgroud)

顺便说一句,来自用户表的emailaddress可以在很多公司,所以不能加入emailaddress :-(

您对如何改进该声明有任何想法吗?

我正在使用Microsoft SQL Server 2000.

编辑:我使用这个:

select *, case when u.email=(select email from companies where Id=1) then 1 else 2 end AS SortMeFirst 
from Users u 
where u.companyId=1 
order by …
Run Code Online (Sandbox Code Playgroud)

sql sorting union select

0
推荐指数
2
解决办法
2855
查看次数

标签 统计

union ×4

sql ×3

sql-order-by ×3

sorting ×2

limit ×1

ms-access ×1

select ×1

sql-server ×1

sqlite ×1