Loc*_*rde 0 t-sql sql-server-2008
我有两个数据库中的表,比方说,cars和bikes.它们都只有两列id,name如下所示:
Bikes table(BikeID int, BikeName)
Cars Table(CarId int, CarName)
Run Code Online (Sandbox Code Playgroud)
这两个表绝对没有物理关系,(没有外键等)没有主键,它实际上只是一列值.
我想从两个表中选择所有行.但如果他们有共同的名字,我想把它们结合起来,如下:
Name BikeId CarId
```````````````````````````````
Car1 null 1
Car2 null 2
Bike1 1 null
Bike2 2 null
BikeCar 3 5
Run Code Online (Sandbox Code Playgroud)
甚至可以这样做吗?我正在使用tsql(Sql server 2008)
谢谢.
ps:我可以考虑制作两个tmp表,添加值,制作第三个临时表,使用while循环并检查每个产品等等.但我只是想知道是否有更短的方法来做...谢谢.
编辑:我意识到我没有想太多就输入了这个问题.改变.谢谢.
与帖子标题相反,这可以使用连接完成.FULL OUTER JOIN将返回尽可能连接在一起的两个表的所有结果,但如果连接条件不匹配,则将为其他表列返回NULL(类似于同时执行左外连接和右外连接).
SELECT
ISNULL(Bikes.BikeName, Cars.CarName) AS Name,
Bikes.BikeId,
Cars.CarId
FROM Bikes
FULL OUTER JOIN Cars ON Bikes.BikeName = Cars.CarName
ORDER BY ISNULL(Bikes.BikeName, Cars.CarName)
Run Code Online (Sandbox Code Playgroud)