MySQL 内连接?
MySQL inner join?
我有 3 个表(2 列)如
table s
NUM GRADE
1 A
2 B
3 C
5 D
table p
NUM GRADE
1 B
2 C
2 D
3 A
table g
NUM GRADE
1 A
3 C
3 B
4 D
我想在内部加入他们彼此这样(在s.NUM=p.NUM=g.NUM)
NUM GRADE
1 A
1 B
1 A
2 B
2 C
2 D
3 A
3 C
3 B
我该怎么办?
谢谢
您可以将 UNION ALL
查询与标识在所有三个 table 之间共享的公共 NUM
值的查询结合起来。在我下面的查询中,后者 table 用作过滤器以删除未出现在所有三个 table 中的任何 NUM
记录。
SELECT t1.NUM, t1.GRADE
FROM
(
SELECT NUM, GRADE FROM s
UNION ALL
SELECT NUM, GRADE FROM p
UNION ALL
SELECT NUM, GRADE FROM g
) t1
INNER JOIN
(
SELECT s.NUM
FROM s INNER JOIN p
ON s.NUM = p.NUM
INNER JOIN g
ON s.NUM = G.NUM
) t2
ON t1.NUM = t2.NUM
ORDER BY t1.NUM
我有 3 个表(2 列)如
table s
NUM GRADE
1 A
2 B
3 C
5 D
table p
NUM GRADE
1 B
2 C
2 D
3 A
table g
NUM GRADE
1 A
3 C
3 B
4 D
我想在内部加入他们彼此这样(在s.NUM=p.NUM=g.NUM)
NUM GRADE
1 A
1 B
1 A
2 B
2 C
2 D
3 A
3 C
3 B
我该怎么办?
谢谢
您可以将 UNION ALL
查询与标识在所有三个 table 之间共享的公共 NUM
值的查询结合起来。在我下面的查询中,后者 table 用作过滤器以删除未出现在所有三个 table 中的任何 NUM
记录。
SELECT t1.NUM, t1.GRADE
FROM
(
SELECT NUM, GRADE FROM s
UNION ALL
SELECT NUM, GRADE FROM p
UNION ALL
SELECT NUM, GRADE FROM g
) t1
INNER JOIN
(
SELECT s.NUM
FROM s INNER JOIN p
ON s.NUM = p.NUM
INNER JOIN g
ON s.NUM = G.NUM
) t2
ON t1.NUM = t2.NUM
ORDER BY t1.NUM