簡體   English   中英

sql server從兩個表中選擇null或value

[英]sql server select from two tables as null or value

這應該不難,但我無法以某種方式完成這項工作。 所以我有兩個表: Splanning_BuildingsSplanning_RoomData Splanning_Buildings表中OBJECTID的主鍵在Splanning_RoomData表中表示為Objectid_bldg。

我需要的是從Splanning_Buildings表中選擇所有行,這樣,如果在Splanning_RoomData表中找到其值,則將其顯示為“ Existing”字符串; 但如果在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.building_n為'null'。 說得通。

第二個查詢返回建築表中的所有行,但返回多個t2.buildings_n行。

這些都不是理想的結果! 我想我需要某種SQL Case()函數嗎?

任何想法? 謝謝!

  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 objectid, 
  (select top 1 1 from room_data 
   where objectid_bldg=objectid) 
  as roomdata_exists from buildings 

我簡化了您的表名-希望您仍然可以理解它。 ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM