在SQL中,是否可以使用一個變數來存盤查詢。 例如,當子查詢在主查詢中被多次使用時,可以節省時間。
例子:
DECLARE @my_query as varchar(250) = select x from my_table where my_table = y。 你的表
SELECT
a,b,c,(@my_query),d,e,f
FROM my_table_1
uj5u.com熱心網友回復:
在SQL中,是否可以使用一個變數來存盤查詢。
這取決于你對 "查詢 "的定義。如果你指的是存盤我們用來執行命令的文本,那么答案是YES。如果您指的是物件型別的查詢,那么答案是否定的--因為沒有適合這種情況的資料型別。
我的意思是,一個變數可以存盤一個字串的值。這個字串可以是你想要的任何查詢命令。因此,你可以存盤例如文本 "select col1,col2 from table1"。
接下來你需要問我們如何使用這個文本,以便將其作為查詢的一部分來執行,這可以通過動態查詢來完成。
我們可以使用內置的存盤程序sp_executesql來執行一個查詢的文本,該存盤程序是為此類需求而建立的。
例如:
-- DECLARE VARIABLE
DECLARE @MyQuery NVARCHAR(MAX)
--設定變數的值。
SET @MyQuery = 'SELECT ''Yes I can''
--執行動態查詢
EXECUTE sp_executesql @MyQuery
下面是另一個例子,看起來更接近你的問題:
--首先讓我們創建一個表。
CREATE TABLE T(ID INT)
INSERT T(ID) VALUES (1), (2)
去
-- 這就是你所寫的:。
-- DECLARE VARIABLE
DECLARE @MyQuery NVARCHAR(MAX)
--設定變數的值。
SET @MyQuery = 'select ID from T where ID = ''1''
--現在讓我們把文本合并成一個完整的查詢。
DECLARE @FullQuery NVARCHAR(MAX)
SET @FullQuery = '
選擇
ID,(' @MyQuery ' )
FROM T
'
PRINT @FullQuery
--執行動態查詢
EXECUTE sp_executesql @FullQuery
注意!你的具體查詢樣本將回傳錯誤,這與 "在SQL中是否可以使用變數來存盤查詢 "的問題沒有關系。這是因為 "查詢 "的格式不正確。
重要的是! 強烈建議閱讀關于這個存盤程序的檔案,了解它為我們提供的更多選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/311070.html
標籤:
上一篇:每一列值選擇20個結果
下一篇:在SQL中識別不同的行集
