簡體   English   中英

在 Else 子句中重用子查詢的值

[英]Reusing Value of a subquery in Else clause

有什么辦法可以在 else 子句的 if 子句中使用 X 的值

if @bid_value>(SELECT  MAX(bid_value) AS X FROM dbo.auctionDetails WHERE status = 0 AND vehicle_id=@vid GROUP BY vehicle_id)
            BEGIN
                //some code      
            END 
ELSE IF X=NULL
        BEGIN
        //some code
        END

您通常會將查詢結果分配給變量。

如果您正在運行 SQL 服務器:

DECLARE @max_bid_value INT;

SELECT @max_bid_value = MAX(bid_value)
FROM dbo.auctionDetails 
WHERE status = 0 AND vehicle_id = @vid;

IF @bid_value > @max_bid_value
BEGIN
    //some code      
END 
...

請注意,我從原始查詢中刪除了GROUP BY子句 - 我認為這更清楚地表明它應該始終返回一個標量值。

請注意,如果要檢查變量是否為null ,則需要@bid is null而不是@bid = null

為什么不為值創建一個 var?

DECLARE @maxValue INT

SELECT @maxValue = MAX(bid_value) 
FROM dbo.auctionDetails 
WHERE status = 0 AND vehicle_id = @vid 

IF (@bid_value > @maxValue)
BEGIN
    // some code
END
ELSE IF (@maxValue IS NULL)
BEGIN
    // some code
END 

關於如何獲得 MAX 值的評論:當您通過 vehicle_id = @vid 進行過濾時,您不需要 GROUP BY 子句,因為您只會獲得一個 vahicle_id 值的結果

您的查詢應如下所示:

    DECLARE @X INT
        SET @X = (SELECT  MAX(bid_value) AS X FROM dbo.auctionDetails WHERE status = 0 AND vehicle_id=@vid);
   IF @bid_value>@MAX   
     BEGIN
            //some code      
      END 
        ELSE IF X=NULL
      BEGIN
            //some code
       END

暫無
暫無

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

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