如果 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/