簡體   English   中英

SQL-嘗試增加值時的語法錯誤

[英]SQL - Syntax Error When Trying to Increment a Value

我在C#項目中將SQL Server用於故障排除程序,並且我有一個包含ID,Question,QuestionId,Solution和Rank的表。 我之前曾問過一個問題,它可以選擇,所以我嘗試修改它來更新。 我正在嘗試將具有最高排名的解決方案的排名增加1。

sql = "UPDATE dbo.Questions SET Rank = Rank + 1 q WHERE Rank=(SELECT MAX(Rank) FROM dbo.Questions i where i.QuestionId = q.QuestionId) AND q.QuestionId = " + questionId;

我收到以下錯誤:

'q'附近的語法不正確關鍵字'AND'附近的語法不正確

表別名放在錯誤的位置。 在SQL Server中,您需要FROM子句:

UPDATE q
    SET Rank = Rank + 1
    FROM dbo.Questions q
    WHERE Rank = (SELECT MAX(Rank)
                  FROM dbo.Questions i 
                  WHERE i.QuestionId = q.QuestionId
                 ) AND
         q.QuestionId = " + questionId;

您也可以這樣寫:

UPDATE q
    SET Rank = Rank + 1
    FROM (SELECT TOP (1) q.*
          FROM dbo.Questions q
          WHERE q.QuestionId = " + questionId
          ORDER BY rank DESC
         );

很明顯,您只想更新一行。

讓我也補充一下。 學習使用查詢參數。 不要將questionId直接放入查詢字符串中。 這只是引入很難調試的語法錯誤的一種方法。

暫無
暫無

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

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