我有一个带有日期时间字段的SQL表.有问题的字段可以为null.我有一个查询,我希望结果按日期时间字段按升序排序,但是我想要在列表末尾的日期时间字段为空的行,而不是在开头.
有没有一种简单的方法来实现这一目标?
我需要按日期/时间字段对PostgreSQL表进行排序,例如last_updated.
但是,该字段允许为空或空,我想与空记录last_updated来之前,非空last_updated.
这可能吗?
order by last_updated asc /* and null last_updated records first ?? */
Run Code Online (Sandbox Code Playgroud) 我正在编写一个将学校表连接到地区表的SQL查询.简单的一对多关系,每所学校都隶属于一个学区.我的查询如下:
SELECT
schools.id AS schoolid,
schools.name AS school,
districts.id AS districtid,
districts.name AS district
FROM sms_schools AS schools
LEFT JOIN sms_districts AS districts ON schools.districtid = districts.id
WHERE 1 = 1
ORDER BY districts.name, schools.name
Run Code Online (Sandbox Code Playgroud)
我做左派的原因是因为不是每个学校都附属于一个学区.例如,一所学校可能是家庭教育,可能包含所有在家接受教育的学生.那不会是在一个地区.
所以我想要做的是使用ORDER BY来按地区名称和学校名称进行排序.唯一的问题是我希望null区位于底部,以便我可以在输出结束时使用一个名为"Other"的组.
是否可以通过在输出结尾处以空值递增来进行排序?
我的目标是,以"DESCENDING"顺序打印查询结果.但问题是,具有NULL值的行位于列表的顶部..如果order by降序,如何将空行放在底部?
select mysubcat.subcat
, mysubcat.subcatid as subcat_id
, (select SUM(myad.PAGEVIEW)
from myad
where MYAD.CREATEDDATE between '01-JUL-13 02.00.49.000000000 PM' and '13-JUL-13 02.00.49.000000000 PM'
AND MYAD.status = 1
and MYAD.mobileapp IS NULL
and myad.subcatid = mysubcat.subcatid )as web_views
from mysubcat
order by web_views desc;
Run Code Online (Sandbox Code Playgroud)
样本结果是这样的
SUBCAT_ID WEB_VIEWS
Swimming Lessons 56 (null)
Medical Services 17 (null)
Mobile Phones & Tablets 39 6519
Home Furnishing & Renovation 109 4519
Run Code Online (Sandbox Code Playgroud)
顺序是降序,我只是想在打印结果的底部放置带有空值的行,那怎么样?
我正在使用Symfony2框架和使用Doctrine ORM构建应用程序.我有一张航空公司的表格,其中缺少一些IATA代码.我正在输出一个按此IATA代码排序的列表,但是我得到了一个不合需要的结果,即带有空IATA代码的记录在顶部排序.
在MySQL中,这很简单,ORDER BY ISNULL(code_iata), code_iata但我对DQL的等价物一无所知.我试过了
$er->createQueryBuilder('airline')->orderBy('ISNULL(airline.codeIata), airline.codeIata', 'ASC')
Run Code Online (Sandbox Code Playgroud)
但这给了我一个语法错误.
学说文档也没有给我答案.有办法吗?
这就是我正在使用的:
$this->paginate = array(
'order' => array('Job.deadline' => 'ASC'),
'limit' => 500
);
Run Code Online (Sandbox Code Playgroud)
并非所有乔布斯都有截止日期,而且目前,通过这个订单,NULLS出现在截止日期之上,所以实际上我有这个:
NULL
NULL
NULL
28/06/2012
29/06/2012
04/07/2012
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我迫切希望得到这个:
28/06/2012
29/06/2012
04/07/2012
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
有没有办法通过CakePHP中的paginate'order'选项实现这一目标.有没有人管理这个?
sql ×4
sql-order-by ×4
mysql ×2
null ×2
cakephp ×1
doctrine-orm ×1
dql ×1
oracle ×1
postgresql ×1
sorting ×1
symfony ×1