我不知道是否可能,我可能会在这里问一个愚蠢的问题,如果是的话,请原谅我。
我有两张相似但不完全的桌子
表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值。这有什么类型的联接吗?或者还有其他方法吗?
答案 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