繁体   English   中英

MySQL-连接两个表,表1中不同的列在表2中的同一列上

[英]MySQL - Join two tables, different columns in table 1 on the same column in table 2

我试图加入不同的列( part_type_n上(其中n的范围从1至54)) Table1用相同的柱( id上,伯,AUTOINC) Table2

架构:

Table1
==============
part_type_1
.
.
.
part_type_54



Table2
=============
id

我尝试了明显的查询(php生成,从n到1到54循环),省略了...中的重复内容:

SELECT * FROM Table1 JOIN Table2 on (Table1.part_type_1=Table2.id), ..., (Table1.part_type_54=Table2.id)

我收到此错误:

1066-非唯一表/别名:“ Table2”

如何加入这两个表?

您将不得不多次自行连接表。

SELECT * FROM table1 t1 
INNER JOIN table2 t2 on t2.Id=t1.part_type_1 
INNER JOIN table2 t3 on t3.id = t1.part_type_54;

希望这可以帮助!

作为编写具有54个表别名的查询的替代方法,您可以考虑一次连接到表-如下所示:

select ...
from Table1 t1
join Table2 t2
  on t2.id in (t1.part_type_1, t1.part_type_2, ... t1.part_type_54)

它为我工作,以获取所需的结果,因为其中一行与存储在一个表列中的各种类别匹配。

询问

       SELECT cm3.*, xp.post_title,GROUP_CONCAT(DISTINCT sc.name) AS cate_list
       FROM `xld_posts` xp 
       JOIN course_map cm0 ON cm0.course_id = xp.ID
       JOIN course_map cm1 ON cm1.course_id = cm0.course_id  AND cm0.id = 3
       JOIN course_map cm2 ON cm2.course_id = cm1.course_id  AND cm1.id = 6
       JOIN course_map cm3 ON cm3.course_id = cm2.course_id  AND cm2.id = 11
       JOIN subject_category sc ON cm3.id = sc.id
       GROUP by post_title ORDER BY post_title

注意:类别值3、6和7是从表单和位获得的。 因此,如果您的表单具有三个或更少的查询,则应动态创建查询并将每个表与上一个表连接。

:)如果有人觉得有用,那就很高兴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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