我有以下数据
name location
Scott Toronto
James Alaska
Tiger London
James Alaska
我想连接名称和位置。它应该返回一个具有不同值的列,按位置和名称排序。
我试了一下,但没有成功。
select distinct concat(name,' ', location) from table1 order by location,name;
select distinct concat_ws(' ',name,location) from table1 order by location, name;
然后我试着用以下方法
select distinct name from (select name,location,concat_ws(' ',name,location)name from table1 order by location,name)x;
这将返回不同的值,但不是按所需的排序顺序。
请告诉我什么是最好的方法?
1条答案
按热度按时间wlp8pajw1#
我不知道“没用”是什么意思。但你的第一个版本只能和
group by
. 这就是你想要的:您可能需要这样写:
这确实有一个问题——模棱两可——如果你有“a b”
name
在一行中的位置“c”,然后在另一行中的位置“a”和“bc”,则串联的值是相同的。但上面会返回两行。要解决该潜在问题(这似乎不太可能),您可以使用:
这适用于
group by
因为你可以在order by
. 它不适用于select distinct
因为在select distinct
.