首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带表达式的逐句顺序

带表达式的逐句顺序
EN

Stack Overflow用户
提问于 2017-10-10 01:34:23
回答 1查看 56关注 0票数 1

我有以下问题。

代码语言:javascript
复制
SELECT 
    mp.id 
FROM
    p_maint_prior pmp
    JOIN maint_prior mp ON(pmp.cid=mp.cid AND pmp.main_pr_id = mp.id)
WHERE
    pmp.property_id = 12345
    AND pmp.cid = 235
    AND pmp.remote_primary_key IS NOT NULL 
ORDER BY 
    mp.maint_prio_type_id = 3,
    mp.maint_prio_type_id DESC
LIMIT 1;

对于这个查询,如果它有id 3类型,它会给我优先权,否则它会给出随机的。想了解更多关于按顺序从句使用的表达式的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 01:45:00

关。这个ORDER BY把3放在最后而不是第一位

代码语言:javascript
复制
ORDER BY mp.maint_prio_type_id = 3, mp.maint_prio_type_id DESC

原因很简单:“真”大于“假”。如果你这么做了,这就更容易理解了:

代码语言:javascript
复制
ORDER BY (mp.maint_prio_type_id = 3)::int, mp.maint_prio_type_id DESC

这使"true“值为"1”,false值为"0“。排序顺序是显而易见的。

如果您首先想要"3“,那么将DESC放在第一个键旁边:

代码语言:javascript
复制
ORDER BY (mp.maint_prio_type_id = 3) DESC, mp.maint_prio_type_id DESC

这是一个奇怪的构造,但是--就像SQL中的许多东西一样--人们很快就会习惯它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46657364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档