Mysql alternativ用于多次连接同一个表

Mysql alternativ用于多次连接同一个表,mysql,Mysql,我使用了下面的查询来获取数据,但是现在我需要再次连接相同的表4或更多次,所以我想找到另一种方法 SELECT t1.id,t1.name,t2.name as name2,t3.name as name3,t4.name as name4.... FROM first_table as t1 left join second_table as t2 on t2.code = t1.f_name, left join second_table as t3 on t3.code = t1.l_nam

我使用了下面的查询来获取数据,但是现在我需要再次连接相同的表4或更多次,所以我想找到另一种方法

SELECT t1.id,t1.name,t2.name as name2,t3.name as name3,t4.name as name4....
FROM first_table as t1
left join second_table as t2 on t2.code = t1.f_name,
left join second_table as t3 on t3.code = t1.l_name,
left join second_table as t4 on t4.code = t1.a_name,
.......
.....
.....

和许多连接,那么如何才能以更好的方式(高效)获得相同的结果呢?

您可以尝试使用此查询:

SELECT
  t1.id,
  t1.name,
  MAX(CASE WHEN t2.code = t1.f_name THEN t2.name END) AS name2,
  MAX(CASE WHEN t2.code = t1.l_name THEN t2.name END) AS name3,
  MAX(CASE WHEN t2.code = t1.a_name THEN t2.name END) AS name4
FORM
  first_table AS t1 LEFT JOIN second_table AS t2
  ON t2.code IN (t1.f_name, t1.l_name, t1.a_name)
GROUP BY
  t1.id,
  t1.name

为什么需要多次加入同一个表?可以只使用一个连接,但这取决于上下文……因为我在第一个表中有多个列,它们与第二个表的同一列有关系,例如t1.f_name是123,f_name=123的相关实名在第二个_表的name列中,并且第一个_表的l_name和a_name的条件相同。请搜索如何在MySQL中执行递归查询。有几种方法,没有一种是非常琐碎的。如果遇到问题,请回来寻求帮助。您的查询是正确的,但这实际上取决于上下文,例如,您可以将
第一个\u表作为t1左键连接到第二个\u表作为t2左键连接到t2上的t2。code IN(t1.f\u name,t1.l\u name,t1.a\u name)
如果它返回多行,您可以使用GROUP\u CONCAT,但这取决于数据库背后的逻辑structure@fthiella如果second_table.code=t1.f_name,我想将second_table.name作为f_name,如果second_table.code=t1.l_name,则将second_table.name作为l_name。但是如果我用IN,我怎么能区分哪个是f_name,l_name,等等。。