MySQL的
SELECT * FROM media
LEFT JOIN media_priority
ON (media_priority.media_id = media.id AND media_priority.media_tag = '".$tag."')
WHERE something = 'something'
ORDER BY media_priority.media_order;
Run Code Online (Sandbox Code Playgroud)
这工作正常,除了media_priority.media_order有时返回null并且mysql将空值放在顶部.
所以我试图弄清楚如何用我的左连接做一个IS NULL AS tempcol语句,所以我可以先按顺序排序.....我似乎无法正确使用语法.
我在哪里将IS NULL语句放在上面的查询中?
我想的是:
LEFT JOIN media_priority
ON (media_priority.media_id = media.id AND media_priority.media_tag = '".$tag."')
media_priority.media_order IS NULL AS isnull
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
Mar*_*ith 12
ORDER BY
CASE WHEN media_priority.media_order IS NULL THEN 1 ELSE 0 END,
media_priority.media_order;
Run Code Online (Sandbox Code Playgroud)
如果您有一些media_order永远无法达到的上限,请使用幻数.
ORDER BY
COALESCE( media_priority.media_order,99999999);
Run Code Online (Sandbox Code Playgroud)
第一种方法显然更安全一些!
Ike*_*ker 11
我建议先按布尔值media_priority.media_order IS NULLfirst 排序,然后按列值排序,以强制NULL结束.
像这样:
SELECT * FROM media
LEFT JOIN media_priority
ON (media_priority.media_id = media.id AND media_priority.media_tag = '".$tag."')
WHERE something = 'something'
ORDER BY (media_priority.media_order IS NULL) ASC, media_priority.media_order ASC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2819 次 |
| 最近记录: |