簡體   English   中英

如何在不使用聯合的情況下編寫Sql語句?

[英]How to write a Sql statement without using union?

我有一個如下的sql語句。 如何在不使用union關鍵字的情況下向此sql語句的結果添加一行(代碼= 0,desc = 1)? 謝謝。

select code, desc
from material 
where material.ExpireDate ='2010/07/23'

您總是可以為表本身使用UNION關鍵字創建視圖

CREATE VIEW material_view AS SELECT code, desc, ExpireDate FROM material UNION SELECT '0', '1', NULL;
SELECT code, desc FROM material_view WHERE ExpireDate = '2010/07/23' OR code = '0';
 WITH material   AS
 (
 SELECT * 
 FROM 
      (VALUES (2, 'x', '2010/07/23'), 
              (3, 'y', '2009/01/01'), 
              (4, 'z', '2010/07/23')) vals (code, [desc], ExpireDate)
 )

SELECT 
     COALESCE(m.code,x.code) AS code, 
     COALESCE(m.[desc],x.[desc]) AS [desc]
FROM material m
FULL OUTER JOIN (SELECT 0 AS code, '1' AS [desc] ) x ON 1=0
WHERE m.code IS NULL OR m.ExpireDate ='2010/07/23'

code        desc
----------- ----
2           x
4           z
0           1

由於您既不想使用聯合也不能使用視圖,因此建議您在材質表中添加一個虛擬行(代碼= 0,desc = 1和ExpireDate,這些東西通常是不會選擇的,例如01) 1900年1月)-然后使用如下查詢:

select code, desc
from material 
where material.ExpireDate ='2010/07/23' or 
    material.ExpireDate ='1900/01/01' 

通常,工會是我的首選。

暫無
暫無

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

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