繁体   English   中英

我想将两列组合成一个新列,但前提是其中一列不为空,然后按该新列排序。 (MySQL)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM