从两个表中统一获取数据并从表A中获取所有行

时间:2016-08-10 01:53:48

标签: mysql sql database join

我有两个表,我希望行集合在一起。 表a是这样的

id a_name image      category
1  name1  image1.png  cate1
2  name2  image2.png  cate2
3  name3  image3.png  cate3
4  name4  image4.png  cate3
5  name5  image5.png  cate1
6  name6  image6.png  cate2
7  name7  image7.png  cate3
8  name8  image8.png  cate1

和这样的表格b(a_id是上表中任何一行的id)

id user_id  a_id email amount   code  active
1   123       2    s@s    23      23ke  1
2   542       1    s@s    23      23ke  1
3   523       2    s@s    23      23ke  1
4   423       6    s@s    23      23ke  1
5   103       5    s@s    23      23ke  1
6   523       5    s@s    23      23ke  0

我希望以这样一种方式连接两个表:每当我运行查询时,它应该返回与表B连接的表A的所有行。我已经使用了连接但它只获得了成功应用连接的行。从表b中提取的行也应该是user_id。 例如:  如果iam用user_id = 523搜索用户的数据。然后它应该输出以下。 (id字段来自表a)

 id  a_name image      user_id email amount  code active
 1  name1  image1.png    -       -     -      -      -
 2  name2  image2.png    523    s@s    s@s    23KE   1
 3  name3  image3.png     -      -     -       -     -
 4  name4  image4.png     -      -     -       -     -
 5  name5  image5.png    523     s@s   23     23KE   0
 6  name6  image6.png     -       -    -       -     -
 7  name7  image7.png     -       -    -       -     -
 8  name8  image8.png     -       -    -       -     -

我正在使用mysql。

2 个答案:

答案 0 :(得分:2)

您必须使用外部加入,

SELECT * from a LEFT OUTER JOIN b ON a.id = b.a_id AND b.user_id = 523

答案 1 :(得分:1)

您似乎想要left join

select a.*, b.*
from a left join
     b
     on a.id = b.a_id and b.user_id = 523;