簡體   English   中英

從sql查詢返回默認記錄

[英]return a default record from a sql query

我有一個sql查詢,我對SQL服務器數據庫運行,例如。

SELECT * FROM MyTable WHERE Id = 2

這可能會返回許多記錄,也可能不會返回任何記錄。 如果它沒有返回,我想改變我的sql查詢以返回默認記錄,這是可能的,如果是這樣,怎么樣? 如果返回記錄,則不應返回默認記錄。 我無法更新數據,因此需要更改sql查詢。

另一種方式(你會得到一個空的初始行集返回);

SELECT * FROM MyTable WHERE Id = 2
IF (@@ROWCOUNT = 0)
   SELECT ...

如果必須返回整行數據(而不僅僅是單個列),則必須創建單個SQL查詢,然后執行以下操作:

左連接實際表默認為單行表

select
    coalesce(a.col1, d.col1) as col1,
    coalesce(a.col2, d.col2) as col2,
    ...
from (
    -- your defaults record
    select
        default1 as col1,
        default2 as col2,
        ...) as d
    left join actual as a
    on ((1 = 1) /* or any actual table "where" conditions */)
SELECT TOP 1 * FROM (
SELECT ID,1 as Flag FROM MyTable WHERE Id = 2
UNION ALL
SELECT 1,2
) qry
ORDER BY qry.Flag ASC

你可以看一下這篇文章。 它與您要求的類似。 如果沒有找到行SQL,則返回一個值

我希望它可以引導你走正確的道路。

如果不存在( SELECT top 1 * FROM mytable WHERE id = 2

select * from mytable where id=  'whatever_the_default_id_is'

其他

select * from mytable where id = 2

查詢需要返回相同數量的字段,因此如果要返回默認值,則不應執行SELECT * FROM而應使用SELECT value FROM

考慮到這一點

SELECT value FROM MyTable WHERE Id = 2
UNION
SELECT CASE (SELECT count(*) FROM MyTable WHERE Id = 2) 
   WHEN 0 THEN 'defaultvalue' 
   END

暫無
暫無

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

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