从两个表中选择整行

时间:2013-02-05 23:01:07

标签: mysql sql

我不知道是否可能,我可能会在这里问一个愚蠢的问题,如果是的话,请原谅我。
我有两张相似但不完全的桌子 表1(user_opinions)

    | o_id     | user_id | opinion      |is_shared_from| date,isglobal etc
    |:---------|---------|:------------:|:------------:|
    | 1        |       11|     text 1   | 0
    | 2        |       13|     text 2   | 2
    | 3        |        9|     text 3   | 0

表2(Buss_opinions)

    | bo_id    | o_id   | user_id      | opinion    | date
    |:---------|--------|:------------:|:------------:|
    | 1        |       2|   52         | bus text 1
    | 2        |       3| 41           | bus text 2

如果我做标准选择并加入如下:

SELECT * FROM user_opinions uo
JOIN Buss_opinions bo
ON uo.o_id = bo.o_id

这将返回两个表的数据连接在一起的行。

我的问题是,如果我想从单独的行中获取这两个表中的数据该怎么办? 结果应该是这样的:

| oid      | bo_id   | opinion      | nb: and other rows from both tables
|:---------|---------|:------------:|
| 1        |    NULL |     text 1   | nb:from table 1
| NULL     |        1|    bus text 1| nb:from table 2
| 2        |    NULL |     text 2   |nb:from table 1

等等

它获取表的数据,并且没有公共字段,它在字段中放置NULL值。这有什么类型的联接吗?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用UNION(http://dev.mysql.com/doc/refman/5.0/en/union.html):

SELECT oid AS OID, null AS BOID, user_id AS USERID, opinion AS Opinion
FROM table1
UNION
SELECT null AS OID, bo_id AS BOID, user_id AS USERID, opinion AS Opinion
FROM table2

编辑:您甚至可以更进一步,并将其与CONCAT功能结合使用:

SELECT CONCAT('OID-', oid) AS ID, user_id AS USERID, opinion AS Opinion
FROM table1
UNION
SELECT CONCAT('BOID-', bo_id) AS ID, user_id AS USERID, opinion AS Opinion
FROM table2