exec ('select * from variable_table_name
order by @variable')
我正試圖把一個動態的sql語句放在一起,指定一個表名和排序列。如果我可以指定一個表名來使sql工作,那將會很好。SQL服務器按表中的第一列排序
有沒有辦法選擇表中的第一列進行排序if @variable sort by not specified?
exec ('select * from variable_table_name
order by @variable')
我正試圖把一個動態的sql語句放在一起,指定一個表名和排序列。如果我可以指定一個表名來使sql工作,那將會很好。SQL服務器按表中的第一列排序
有沒有辦法選擇表中的第一列進行排序if @variable sort by not specified?
您可以使用:
ORDER BY 1;
從ORDER BY Clause (Transact-SQL):
order_by_expression - 指定要排序的查詢結果集列或表達式。可以將排序列指定爲名稱或列別名或表示列在選擇列表中的列的位置的非負整數。
(重點煤礦)
這個腳本應該做
DECLARE @tbl NVARCHAR(128)
DECLARE @col NVARCHAR(128)
DECLARE @sql NVARCHAR(MAX)
SET @tbl = 'MyTbl'
SET @col = '' --enter column name when required
IF @col = ''
BEGIN
SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY 1'
END
ELSE
SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY ' + @col
EXEC(@sql)
在sql語句中使用+執行確實會讓上帝殺死一隻小狗:( 在你知道它有人使用該值之前: MyTbl; SELECT * FROM supersecretcreditcardtable – Robba
像這樣的東西(伊夫使用了Adventureworks爲例)的工作: -
DECLARE @SORTCOLUMN varchar(50);
SET @SORTCOLUMN = 'OrganizationLevel';
IF @SORTCOLUMN IS NULL
EXEC('SELECT * FROM HumanResources.Employee ORDER BY 1')
ELSE
EXEC('SELECT * FROM HumanResources.Employee ORDER BY ' + @SORTCOLUMN)
離開了'SET @SORTCOLUMN'行默認設置爲第一列
I我想我只是找到了它,你可以爲Order By指定一個int。 – Rod