我有一个包含
的SQL表ID
Title
Group Title
所有内容都有ID
,所有内容都有Title
,但只有少数人有Group Title
。
我想提取一份记录列表,但如果Group Title
存在,我希望它取代Title
。
然后我想按结果排序列表;所以,
如果我有三条记录
id title group title
1 Womble
2 Alphabet Zebra
3 Mirror
结果将是
id result
3 Mirror
1 Womble
2 Zebra
如何通过单个查询实现此目标?
我怀疑我需要选择一个选择,虽然以下似乎可行,但似乎有点' hacky'和作弊
SELECT CONCAT_WS('',group_title,title) AS ordering,id,film_title,series_title
FROM records
ORDER BY ordering
因此,如果group title
为NULL
,则不会显示任何内容,但如果有,则group_title
会固定在标题上。即使看起来很丑,也不会显示此字段。
答案 0 :(得分:0)
如果我理解你想要什么,我想你可以使用这样的查询:
select
case when trim(coalesce(group_title, '')) = '' then
title
else
group_title
end ordering,
id, film_title, series_title
from records
order by ordering;