Sql-Server
在 SET 語句中使用括號
我正在嘗試計算不同對的數量
sender_id
,send_to_id
並將其分配給一個變數@UniqueRequests
。當我嘗試下面的語句時,我收到一條錯誤消息,指出附近的語法)
不正確。DECLARE @UniqueRequests int; SET @UniqueRequests = (SELECT COUNT(*) FROM (SELECT DISTINCT sender_id, send_to_id FROM friend_request));
所以我的問題是
- 正確的說法是什麼?
- 似乎我們必須
SELECT
在分配變數時在 a 周圍使用括號。也就是說,我們需要寫SET @MyVariable = (SELECT some_expression);
Why is that?- 一般是否有關於在 SQL Server 中使用括號的文件頁面?
感謝您的幫助!
實際上這個錯誤有點令人困惑,這就是你問這些問題的原因。
正確的說法是:
DECLARE @UniqueRequests int; SET @UniqueRequests = (SELECT COUNT(*) FROM (SELECT DISTINCT sender_id, send_to_id FROM friend_request) friends);
我在其他一些具有相同概念的表上進行了測試,您可能會看到如下結果:
這些問題的答案如下:
- 正確的說法是什麼?
DECLARE @UniqueRequests int; SET @UniqueRequests = (SELECT COUNT(*) FROM (SELECT DISTINCT sender_id, send_to_id FROM friend_request) friends);
- 似乎我們必須在分配變數時在 SELECT 周圍使用括號。也就是說,我們需要寫 SET @MyVariable = (SELECT some_expression); 為什麼呢?
這是因為您正在設置值,並且您不能將關鍵字和其他字元串分配給 int,而是您想要分配該值,這意味著查詢必須首先執行,並且您希望將結果分配給這個特定的整數變數。
或者,如果您只想設置該值,您可以使用以下方法:
DECLARE @UniqueRequests int; select @UniqueRequests = COUNT(*) FROM CommandLog print @UniqueRequests
- 一般是否有關於在 SQL Server 中使用括號的文件頁面?
希望這可以幫助。