我有一个带有两个表A和B的mysql数据库。表A在第1列中出现了每个值,但是表B中每个值都出现了多次。像这样:
表A
alpha zeta
+-------------+
| abc | blah |
+-------------+
表B
alpha beta
+----------------+
| abc | blah-1 |
| abc | blah-2 |
| abc | blah-3 |
| abc | blah-4 |
| abc | blah-5 |
+----------------+
我需要的是一个查询,如果两个alpha列中存在匹配(A.alpha = B.alpha),则在结果中返回两行的所有值。 A. * ,B。*
但是,如果上面至少有一个匹配,但表B中的'abc'行多于表A中的结果行,结果行应包含表B中每个'abc'行的数据和包含单个行的行表A中的'abc'匹配。
因此,对于上面的两个表,结果将如下所示:
A.alpha A.zeta B.alpha B.zeta
+---------------------------------+
| abc | blah | abc | blah-1 |
| abc | blah | abc | blah-2 |
| abc | blah | abc | blah-3 |
| abc | blah | abc | blah-4 |
| abc | blah | abc | blah-5 |
+---------------------------------+
当然,abc不是alpha列中的唯一值。
我花了很多时间试图解决这个问题,并希望得到任何帮助。
答案 0 :(得分:1)
SELECT A.Alpha
,A.Zeta
,B.Alpha
,B.Zeta
FROM TABLEA A INNER JOIN TABLEB B
ON A.alpha = B.alpha
答案 1 :(得分:1)
这在SQL book的任何介绍中都有解释,并且是一个简单的连接。
SELECT *
FROM TableA
JOIN TableB ON TableA.Alpha = TableB.Alpha
这里没有魔力。