Sql server sql server从两个表中选择null或value

Sql server sql server从两个表中选择null或value,sql-server,join,Sql Server,Join,这应该不难,但不知何故,我无法使这项工作。所以我有两个表:Splanning_Buildings和Splanning_RoomData。Splanning_Buildings表中OBJECTID的主键在Splanning_RoomData表中表示为OBJECTID_bldg 我需要的是从Splanning_Buildings表中选择所有行,如果在Splanning_RoomData表中找到了它的值,则将该值显示为现有字符串;但如果在Splanning_RoomData中找不到,则显示为空白 这是

这应该不难,但不知何故,我无法使这项工作。所以我有两个表:Splanning_Buildings和Splanning_RoomData。Splanning_Buildings表中OBJECTID的主键在Splanning_RoomData表中表示为OBJECTID_bldg

我需要的是从Splanning_Buildings表中选择所有行,如果在Splanning_RoomData表中找到了它的值,则将该值显示为现有字符串;但如果在Splanning_RoomData中找不到,则显示为空白

这是SQL Server 2012

以下是我的sql:

SELECT t1.objectid, name, t2.building_n  FROM splanning_buildings t1 LEFT JOIN splanning_roomdata t2 ON t1.objectid = t2.objectid_bldg WHERE t2.objectid_bldg IS NULL

SELECT t1.objectid, name, t2.building_n  FROM splanning_buildings t1 LEFT JOIN splanning_roomdata t2 ON t1.objectid = t2.objectid_bldg 
第一个查询返回splanning buildings表中的所有行,但splanning_RoomData表中存在的行除外;所以t2.n是空的。有道理

第二个查询返回buildings表中的所有行,但返回多个t2.buildings\n行

这些都不是期望的结果!我想我需要某种sql Case函数

有什么想法吗? 谢谢


我把你们的桌子名称简化了一点,希望你们还能理解-

因此,如果我理解正确,您希望显示所有建筑物,并显示单词existing(存在),如果它们至少有一个关联的房间。是这样吗?是的。如果不存在,则为空。感谢选择objectid,name从splanning_roomdata中选择1,其中objectid_bldg=objectid as roomdata_存在于splanning_buildingsHmmm中,现在已经太迟了,但您的选择中不应该有该名称。虽然我的查询在原则上是有效的,但请看这里,谢谢…第一次尝试时将转到tryWorks。谢谢问题:您的代码如何显示为“status”这样的列?目前,它输出为“Column1”,我想在asp.net应用程序中实际使用一个列。谢谢。因为exists接受任意数量的列和行,所以您可以将top1子句保留在查询之外。
  SELECT t1.objectid, name,
        CASE WHEN (EXISTS(SELECT TOP(1) 1 FROM splanning_roomdata t2 WHERE     t1.objectid = t2.objectid_bldg )) THEN 
        'Exists'
        ELSE 'Not exists' END AS [status]
    FROM splanning_buildings t1
  SELECT t1.objectid, name,
        CASE WHEN (EXISTS(SELECT TOP(1) 1 FROM splanning_roomdata t2 WHERE     t1.objectid = t2.objectid_bldg )) THEN 
        'Exists'
        ELSE 'Not exists' END AS [status]
    FROM splanning_buildings t1