1

我有 2 个 MYSQL 表,firmarach

  • 坚定表:
id_fir | 纳兹瓦 | 观点 | nr_konta | 标识
-------------------------------------------------
0 | 美国广播公司 | 美国广播公司 | 123 | 图片/abc.png
1 | qwerty| qwert | 123 | img/qwerty.png
  • 拉赫表:
id_rach | id_fir | 数据终端 | 数据平台 | 克沃塔
-------------------------------------------------- --------------
0 | 1 | 2013-09-30 | 空 | 123
1 | 0 | 2013-09-30 | 2013-09-17 | 123
2 | 0 | 2013-09-26 | 2013-09-21 | 321
3 | 1 | 2013-09-27 | 空 | 333

我的sql查询:

SELECT r.`id_rach` , f.`nazwa` , f.`opis` , r.`kwota` , r.`data_termin` , r.`data_platnosc`
FROM rach r
INNER JOIN firma f
USING ( id_fir )
ORDER BY `data_platnosc` IS NULL asc, `data_termin` desc

到目前为止我做了:

id_rach | 纳兹瓦 | 观点 | 克沃塔 | 数据终端 | 数据平台
-------------------------------------------------- ---------------
1 | 美国广播公司 | 美国广播公司 | 123 | 2013-09-30 | 2013-09-17
2 | 美国广播公司 | 美国广播公司 | 321 | 2013-09-26 | 2013-09-21
0 | qwerty| qwerty| 123 | 2013-09-30 | 无效的  
3 | qwerty| qwerty| 333 | 2013-09-27 | 无效的  

我想得到结果:

第一个 data_platnosc 为 null 并且 data_termin order desc

然后其他data_termin命令desc

id_rach | 纳兹瓦 | 观点 | 克沃塔 | 数据终端 | 数据平台
-------------------------------------------------- ---------------
0 | qwerty| qwerty| 123 | 2013-09-30 | 无效的  
3 | qwerty| qwerty| 333 | 2013-09-27 | 无效的  
1 | 美国广播公司 | 美国广播公司 | 123 | 2013-09-30 | 2013-09-17
2 | 美国广播公司 | 美国广播公司 | 321 | 2013-09-26 | 2013-09-21

这个解决方案?

我想得到结果:

第一个 data_platnosc 为 null 并且 data_termin 顺序为 asc

然后其他 data_termin 不为空 order desc

id_rach | 纳兹瓦 | 观点 | 克沃塔 | 数据终端 | 数据平台
-------------------------------------------------- ---------------
3 | qwerty| qwerty| 333 | 2013-09-27 | 无效的    
0 | qwerty| qwerty| 123 | 2013-09-30 | 无效的  
1 | 美国广播公司 | 美国广播公司 | 123 | 2013-09-30 | 2013-09-17
2 | 美国广播公司 | 美国广播公司 | 321 | 2013-09-26 | 2013-09-21
4

1 回答 1

0

order by几乎是正确的:

ORDER BY `data_platnosc` IS NULL desc, `data_termin` desc

如果您首先需要这些值NULL,请使用. 当为真时返回,你首先想要那个。descorder byIS NULL1

或者,您可以使用以下短语IS NOT NULL

ORDER BY `data_platnosc` IS NOT NULL asc, `data_termin` desc

为了这:

第一个 data_platnosc 为 null 并且 data_termin 顺序为 asc。然后其他 data_termin 不为空 order desc

使用case声明:

ORDER BY `data_platnosc` IS NULL desc,
         (case when `data_platnosc` IS NULL then `data_termin` end) asc,
         data_termin desc
于 2013-09-11T16:15:34.780 回答