[英]I want to combine two columns into a new column, but only if one isn't blank, and then sort by that new column. (MySQL)
假设我有两列,城市和站点名称。
City Sitename
Boston Hynes Convention Center
Baltimore The Sheraton
NYC Times Square
Applebees
Tuoson
Beijing
My Backyard
我故意将任一列中的一些字段留空,这就是原因。 当我使用 PHP output 此信息时,我希望它以 {city} - {sitename} 的形式出现,但前提是它们都不为空。 如果其中一个为空白,那么我只希望它显示 {city} 或 {state},无论它是什么。 然后,一旦我有了这个新的组合(或不)值列,我想按这个新列 A - Z 对我的数据进行排序。所以最后它应该看起来像这样......
City Sitename Combined
Applebees Applebees
Baltimore The Sheraton Baltimore - The Sheraton
Beijing Beijing
Boston Hynes Convention Center Baltimore - Hynes Convention Center
My Backyard My Backyard
NYC Times Square NYC - Times Square
Tuoson Tuoson
我之前已经合并并重命名了列并完成了排序,但是尝试添加条件和案例让我摸不着头脑。
哦,这不是表格更改,而是我想要检索数据的方式。 所以声明应该是这样的......
“从表中选择 *...”
这是未经测试的,我很抱歉。
Select Trim(BOTH ' - ' From Concat(Coalesce(city, ''), ' - ', Coalesce(sitename, ''))) As citysite
From my_table
Order By citysite
我相信 MySQL 可以让您按别名列排序。 如果不是这种情况,那么只需将 Trim() 内容也复制到 Order By 中。
SELECT
COALESCE(City,'') as City,
COALESCE(Sitename,'') AS Sitename,
CASE
WHEN COALESCE(City,'')='' THEN Sitename
WHEN COALESCE(City,'')<>'' AND COALESCE(Sitename,'')='' THEN City
ELSE City + ' - ' + Sitename
END AS Combined
FROM table
ORDER BY
CASE
WHEN COALESCE(City,'')='' THEN Sitename
WHEN COALESCE(City,'')<>'' AND COALESCE(Sitename,'')='' THEN City
ELSE City + ' - ' + Sitename
END
这应该很简单。
SELECT case when city is null then
sitename
else
city || ' - ' || sitename
end
FROM table
?
select City + ' ' + Sitename
where City ....
and Sitename ...
order by City + ' ' + Sitename
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.