我有以下格式的一些数据:
国家:
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'
条件,则新列与现有名称列相同.
我可以使用self连接获得这种表吗?如果是,怎么样?
如果这不能用自我连接完成,是否值得尝试在MySql中执行它,或者我最好以编程方式执行它?
你可以在这里测试它。 https://paiza.io/projects/e/oahtrlObx_ctyHBZFnzDvA