[英]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.