如何做一个两个表的SQL选择

时间:2014-03-04 21:23:40

标签: mysql sql

我有一个带有两个表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列中的唯一值。

我花了很多时间试图解决这个问题,并希望得到任何帮助。

2 个答案:

答案 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

这里没有魔力。