如何加入表并过滤一些行?

时间:2014-07-16 07:16:26

标签: mysql sql

我很抱歉英语不好。

所以我有一个select sql返回结果如下:

Aid   type  name
1     1     a   
2     1     b
3     2     c
4     2     d
5     3     e
6     3     f
7     3     g

另一个select会返回如下结果:

Bid  Aid type   content key
3    5   3      aaa     1
9    7   3      bbb     1
10   10  2      ccc     2

我希望得到这个:

Aid Bid  type name content  
5   3    3    e    aaa
6   NULL 3    f    NULL
7   9    3    g    bbb

我该怎么做?

select Aid, type, name from tableA
(HOW to JOIN???) ( 
   select Bid, type, content from tableB where key = 1
) on tableA.Aid = tableB.Aid

2 个答案:

答案 0 :(得分:0)

SELECT a.Aid, 
       b.bid,
       a.type,
       a.name,
       b.content
FROM tableA AS a LEFT JOIN
     tableB AS b ON a.Aid = b.Aid
WHERE b.key = 1

答案 1 :(得分:-1)

w3schools on joining上有一些很好的教程,但假设您希望t1t2一起使用Aid作为关键:

SELECT t1.Aid, t2.Bid, t1.type, t1.name, t2.content
FROM t1
LEFT JOIN t2 ON t1.Aid = t2.Aid
WHERE (t2.key = 1) OR (t2.key IS NULL)

请注意,您需要使用LEFT JOIN,因为Aid中的t2中的每条记录都没有匹配的t1记录,并且您希望显示NULL比...