鍍金池/ 問答/數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ SQLServer里將查詢出的一個字段 as 為新名稱,再以這個新字段作為條件加

SQLServer里將查詢出的一個字段 as 為新名稱,再以這個新字段作為條件加入 where 報錯?

SELECT Id,Yssl,Ysbj,YsslSh,ZcPrice,FcPrice,RgPrice,PriceType,Mark,

       (SELECT MakeType FROM [3d_De] WHERE Id=[3d_Cymb_Item].De_Id) AS MakeType

FROM [3d_Cymb_Item] 

WHERE Cymb_Id=833 AND Tree Like'%,11088,%' AND Unit<>'' AND MakeType=1

--我查詢出一個新字段 AS 為新的名稱

--在 WHERE 里面作為條件就報錯、但去掉它就正常

--這個條件又是必要的、需要根據(jù) MakeType 來區(qū)分?jǐn)?shù)據(jù)呀

--這咋處理呀 (=_=||

回答
編輯回答
入她眼

在外面套一層子查詢

SELECT * FROM (
    SELECT Id,Yssl,Ysbj,YsslSh,ZcPrice,FcPrice,RgPrice,PriceType,Mark,
    
           (SELECT MakeType FROM [3d_De] WHERE Id=[3d_Cymb_Item].De_Id) AS MakeType
    
    FROM [3d_Cymb_Item] 
    
    WHERE Cymb_Id=833 AND Tree Like'%,11088,%' AND Unit<>'' 
)
WHERE MakeType=1

不過我更建議用內(nèi)聯(lián)的方式

SELECT Id,Yssl,Ysbj,YsslSh,ZcPrice,FcPrice,RgPrice,PriceType,Mark,

       MakeType

FROM [3d_Cymb_Item] A

INNER JOIN [3d_De] B ON B.Id=A.De_Id

WHERE A.Cymb_Id=833 AND A.Tree Like'%,11088,%' AND A.Unit<>'' AND B.MakeType=1
2017年11月8日 11:37