2014-03-04 25 views
-1

我有一个mysql数据库,有两个表A和B.表A有一个出现在第1列中的每个值,但表B有多个出现的每个值。事情是这样的:如何做一个两个表sql select

表A

alpha zeta 
+-------------+ 
| abc | blah | 
+-------------+ 

表B

alpha beta 
+----------------+ 
| abc | blah-1 | 
| abc | blah-2 | 
| abc | blah-3 | 
| abc | blah-4 | 
| abc | blah-5 | 
+----------------+ 

我需要的是一个查询,其中,如果有两个字母列的匹配(A.alpha = B. alpha)两行的所有值都返回结果中,例如然而,如果至少存在一个如上所述的匹配,但是表B中的'abc'行比表A中的多,则结果行应该包含每个'abc'的数据,排在表B和含有表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

您花时间编写/花式格式化此问题的时间量,我敢打赌,如果您在Google上花费了1/10的时间,您会得到问题的答案。 –

+0

大部分时间(大约2小时)我花在Google和Mysql文档站点上,试图找到答案。如果这还不够,我向你道歉。 –

回答

1
SELECT A.Alpha 
     ,A.Zeta 
     ,B.Alpha 
     ,B.Zeta 
FROM TABLEA A INNER JOIN TABLEB B 
ON A.alpha = B.alpha 
+1

谢谢@ToonKrijthe甚至没有通知:) –

1

这在SQL书的任何介绍中都有说明,并且是一个简单的连接。

SELECT * 
FROM TableA 
JOIN TableB ON TableA.Alpha = TableB.Alpha 

这里没有魔法。

+0

这个答案也可以,但不是第一次。谢谢 –