mysql - 如果第一个值为空,则可以用其他值替换 ORDER BY

标签 mysql select expressionengine sql

如果 field_id_36 为空,是否可以将值 field_id_36 替换为 field_id_39?

SELECT wt.title, wt.url_title, wt.weblog_id, wt.entry_id, wd.field_id_36
    FROM exp_weblog_titles wt
    LEFT JOIN exp_weblog_data wd
    ON wt.entry_id = wd.entry_id
    WHERE wt.weblog_id = {weblog_id_insert}
    ORDER BY field_id_36+0

所以理论上,这就是我想要做的:

SELECT wt.title, wt.url_title, wt.weblog_id, wt.entry_id, wd.field_id_36, wd.field_id_39
    FROM exp_weblog_titles wt
    LEFT JOIN exp_weblog_data wd
    ON wt.entry_id = wd.entry_id
    WHERE wt.weblog_id = {weblog_id_insert}
    ORDER BY if(field_id_36)else(field_id_39)+0

最佳答案

给定样本数据:

id_36   id_39
--      --    
1       10
4       40
NULL    2
NULL    3

,这个查询:

SELECT  wt.title, wt.url_title, wt.weblog_id, wt.entry_id, wd.field_id_36, wd.field_id_39
FROM    exp_weblog_titles wt
LEFT JOIN
        exp_weblog_data wd
ON      wt.entry_id = wd.entry_id
WHERE   wt.weblog_id = {weblog_id_insert}
ORDER BY
        COALESCE(field_id_36, field_id_39)

会这样排序:

id_36   id_39
--      --    
1       10
NULL    2
NULL    3
4       40

,而这个:

SELECT  wt.title, wt.url_title, wt.weblog_id, wt.entry_id, wd.field_id_36, wd.field_id_39
FROM    exp_weblog_titles wt
LEFT JOIN
        exp_weblog_data wd
ON      wt.entry_id = wd.entry_id
WHERE   wt.weblog_id = {weblog_id_insert}
ORDER BY
        field_id_36, field_id_39

将像这样排序:

id_36   id_39
--      --    
NULL    2
NULL    3
1       10
4       40

关于mysql - 如果第一个值为空,则可以用其他值替换 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159131/

相关文章:

javascript - 使用 Javascript 突出显示相应的名称

MySQL Workbench 6.3 将无法连接到 mysql-5.7.7-rc-osx10.9-x86_64

mysql - Docker-Compose:为什么我的 Rails 图像在访问 MySQL 数据库时存在权限问题?

Mysql 从 future 日期时间中选择分钟 - now()

c - 创建将同时为 200 多个客户端发送/接收任务的服务器时,使用选择或多线程(或两者)更好吗

expressionengine - 将 ExpressionEngine 成员与 MailChimp 集成的最佳方式是什么?

php - 追加记录并使其成为 "selected"

mysql - 如何在一次计算中选择和过滤公式

twitter-bootstrap-3 - 如何在 Bootstrap 行中有多个列

javascript - ExpressionEngine cms 中的定位问题