数据库
首页 > 数据库> > mysql – 在第二个基础上连接基于多个列的表

mysql – 在第二个基础上连接基于多个列的表

作者:互联网

我有两个表Place和Post,我需要生成一个输出

place
--------------
std_id  sch_id
1       1
2       2
3       1
4       3
5       4
6       2
7       5
8       3
9       5
10      4

Post
------------
sch1_id  sch2_id  sch3_id  sup_id
1        2        3        1
3        2        4        2

我需要生成以下输出

sup_id  sch_id  std_id
1       1       1
1       1       3
1       2       2
1       2       6
1       3       4
1       3       8
2       3       4
2       3       8
2       2       2
2       2       6
2       4       5
2       4       10

我试过这个

 SELECT pl.std_id,po.sup_id FROM `place` pl,`post` po WHERE pl.sch_id =
 po.sch1_id group by po.sup_id

得到了这个

| std_id | sup_id |
|--------|--------|
|      1 |      1 |
|      4 |      2 |

编辑

SQLFiddle

解决方法:

只需使用IN()

SELECT pl.std_id,pl.sch_id,po.sup_id
FROM `place` pl
INNER JOIN `post` po
 ON(pl.sch_id IN(po.sch1_id,po.sch2_id,po.sch3_id))

尽管非常推荐,但无需规范化您的数据!你应该重新考虑你的表结构.

标签:mysql,join,multiple-columns
来源: https://codeday.me/bug/20190724/1524968.html