【发布时间】:2019-09-26 21:57:41
【问题描述】:
我有一些数据格式如下:
国家:
lang | code | name
==========================
EN 1001 Italy
IT 1001 Italia
RO 1001 Italia
AL 1001 Itali
TR 1001 Italya
--------------------------
EN 1002 Greece
RO 1002 Grecia
AL 1002 Greqi
TR 1002 Yunanistan
--------------------------
EN 1003 Romania
AL 1003 Rumani
TR 1003 Romanya
--------------------------
我想选择所有名称,但要多一列,在其中我以特定语言(例如 EN)列出该国家/地区的名称(具有相同的代码)。
我想打印这张表:
lang | code | name | name_EN
===================================
EN 1001 Italy Italy
IT 1001 Italia Italy
RO 1001 Italia Italy
AL 1001 Itali Italy
TR 1001 Italya Italy
-----------------------------------
EN 1002 Greece Greece
RO 1002 Grecia Greece
AL 1002 Greqi Greece
TR 1002 Yunanistan Greece
-----------------------------------
EN 1003 Romania Romania
AL 1003 Rumani Romania
TR 1003 Romanya Romania
-----------------------------------
我尝试使用自加入,但没有成功。
SELECT t1.lang AS lang
, t1.code AS code
, t1.name AS name
, t2.name AS name_EN
FROM countries t1
INNER JOIN countries t2
ON t2.name = t1.name
AND t2.lang = 'EN'
从这个查询中,我只得到了 lang EN 中的名称;每个国家/地区 1 个名称。
lang | code | name | name_EN
===================================
EN 1001 Italy Italy
EN 1002 Greece Greece
EN 1003 Romania Romania
如果我删除t2.lang = 'EN' 条件,新列与现有名称列相同。
我真的可以使用自联接获得这种表吗?如果是,怎么做?
如果这不能通过自联接完成,是否值得(在性能方面)尝试在 MySql 中进行,还是我最好以编程方式进行?
你可以在这里测试它。 https://paiza.io/projects/e/oahtrlObx_ctyHBZFnzDvA
【问题讨论】: