连接两个不具有相同Column名称的表

时间:2019-03-28 09:44:04

标签: sql sql-server left-join

关于SQL查询,我是一个新手,但我希望有人可以帮助我吗?

我有两个表:

表一具有以下列: 客户名称 ScheduleName

表2包含列: 虚拟机名称 BackupStatus

到目前为止,这是我的两个选择语句:

select * 
from [dbo].[CommCellBkSchedule]
where ClientName LIKE 'KI%'
order by ClientName

select * 
from VMProtectionCoverage (32, '')
where VMName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by VMName

这些表没有任何相同的列,但是VMName和ClientName具有相同的详细信息,即两个服务器名称。

如何组合表以在一条select语句中获取所有数据?

即我想要服务器名称,backupstatus和日程表名称吗? 任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

基本上,您将两个表与公共列(在本例中为客户端名称和VMName)连接在一起。如果希望保留这些表之一而不在联接后丢失数据,则可以使用标记中提到的LEFT JOIN。否则,可以使用INNER JOIN。

SELECT b.VMName,b.BackupStatus,a.ScheduleName
FROM [dbo].[CommCellBkSchedule] a
INNER JOIN [dbo].[VMProtectionCoverage] b
on a.ClientName=b.VMName
where ClientName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName

答案 1 :(得分:0)

您可以使用INNER JOIN使用以下解决方案:

SELECT CS.ClientName, CS.ScheduleName, VC.BackupStatus 
FROM CommCellBkSchedule CS INNER JOIN VMProtectionCoverage(32, '') VC ON CS.ClientName = VC.VMName 
WHERE CS.ClientName LIKE 'KI%' AND VC.BackupStatus LIKE 'Currently protected'
ORDER BY CS.ClientName

答案 2 :(得分:0)

SELECT CBS.ClientName, CBS.ScheduleName, VPC.BackupStatus 
FROM CommCellBkSchedule CBS FULL OUTER JOIN VMProtectionCoverage VPC ON CBS.ClientName = VPC.VMName 
WHERE CBS.ClientName LIKE 'KI%' AND VPC.BackupStatus LIKE 'Currently protected'
ORDER BY CBS.ClientName

答案 3 :(得分:0)

您可以尝试以下操作:

select * 
from [dbo].[CommCellBkSchedule] , VMProtectionCoverage (32, '')
where ClientName LIKE 'KI%' MName LIKE 'KI%' AND BACKUpSTatus LIKE 'Currently protected'
order by ClientName,VMName