求一个简单的SQL语句,高手帮帮忙 ( 积分: 10 )

  • 主题发起人 主题发起人 sjm
  • 开始时间 开始时间
S

sjm

Unregistered / Unconfirmed
GUEST, unregistred user!
表a1中有staus和date两个字段,status(int类型)的值有1、2和3共三种。现在想把凡是status的值为2的记录靠前,其余的记录放在后面,应该如何来写SQL查询语句呢? 谢谢!
 
select * from table where status= 2
UNION ALL
select * from table where status<> 2
 
to corpose0:
谢谢你的指教。我参考了你的代码,以下是我的实际代码:
(SELECT * from tb_topic where status= 2 order by datetime desc) UNION all (SELECT * from tb_topic where status<> 2 order by datetime desc)
也即:我要把status=2的记录往前摆,同时有日期排序的要求;同样的,status<>2的记录放在后面,这些记录也有日期排序的要求。然后运行后说order附近有错,不知是何原因?
 
ACCESS:
SELECT * from tb_topic
order by iif([status] = 2, -1, [status]), [datetime] desc

SQL SERVER
SELECT * from tb_topic
order by case when [status] = 2 then -1 else [status] end, [datetime] desc
 
select * from a1 order by status='2' desc,status
 
corpose0的语句是比较通用的做法,其它人的可在本例中使用。
Order附近有错误,是因为DateTime是一个保留词,应使用分界符,比如换成[datatime],或,"datatime",一般使用[Datetime]
 
后退
顶部