我有以下问题。
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类型,它会给我优先权,否则它会给出随机的。想了解更多关于按顺序从句使用的表达式的信息。
发布于 2017-10-10 01:45:00
关。这个ORDER BY把3放在最后而不是第一位
ORDER BY mp.maint_prio_type_id = 3, mp.maint_prio_type_id DESC原因很简单:“真”大于“假”。如果你这么做了,这就更容易理解了:
ORDER BY (mp.maint_prio_type_id = 3)::int, mp.maint_prio_type_id DESC这使"true“值为"1”,false值为"0“。排序顺序是显而易见的。
如果您首先想要"3“,那么将DESC放在第一个键旁边:
ORDER BY (mp.maint_prio_type_id = 3) DESC, mp.maint_prio_type_id DESC这是一个奇怪的构造,但是--就像SQL中的许多东西一样--人们很快就会习惯它。
https://stackoverflow.com/questions/46657364
复制相似问题