2013-05-02 77 views
1

我有利用MySQL的會話變量(注意@rank變量)你可以在C#連接器中使用MySQL @ session變量嗎?

SELECT Rank, UserId, CurrentVDOT 
FROM 
    (
     SELECT @rank := @rank + 1 AS Rank, UserId, MaxVDOT AS CurrentVDOT 
     FROM 
      (
       SELECT UserId, MAX(VDOT) AS MaxVDOT 
       FROM 
        (
         SELECT U.UserId, U.VDOT 
         FROM 
          (
           SELECT UserId, MAX(Created) AS Created 
           FROM UserVDOT 
           GROUP BY UserId 
          ) G 
         INNER JOIN UserVDOT U 
         ON U.UserId = G.UserId 
          AND U.Created = G.Created 
        ) M 
       GROUP BY UserId 
       ORDER BY MaxVDOT DESC 
      ) R, (SELECT @rank := 0) foo 
    ) F 
WHERE F.UserId = @UserId; 

如果我試圖對C#的MySQL連接器執行此,它試圖告訴我,我需要聲明@rank作爲查詢一個輸入參數變量。

有沒有辦法解決這個問題?

謝謝。

+0

通常,當使用'@something'時C#會認爲您正在嘗試創建[SqlParameter](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx) 。有另外一種方法可以在MySQL中聲明會話變量嗎?更多信息[這裏](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sessionparameter.aspx)。 – Brian 2013-05-02 21:35:34

回答

8

Hello Allison!

我最近面臨同樣的問題,但是我發現默認情況下,SQL連接禁止在查詢中使用變量。爲了解決 這個問題,你可以按如下啓用連接字符串:

連接字符串:

server=192.168.0.0;password=root;User Id=root;Persist Security Info=True;database=my_db;Allow User Variables=True 

您必須輸入連接參數允許用戶變量=真,使其工作。

我希望我能幫上忙。

Hiago高木

+0

輝煌!謝謝! – 2013-07-16 15:11:32

0

有,如果你不想做出改變全球通過設置連接字符串的另一種方式。

這可以通過將名稱用下面的單引號'來完成。

SELECT Rank, UserId, CurrentVDOT 
FROM 
    (
     SELECT @'rank' := @'rank' + 1 AS Rank, UserId, MaxVDOT AS CurrentVDOT 
     FROM 
      (
       SELECT UserId, MAX(VDOT) AS MaxVDOT 
       FROM 
        (
         SELECT U.UserId, U.VDOT 
         FROM 
          (
           SELECT UserId, MAX(Created) AS Created 
           FROM UserVDOT 
           GROUP BY UserId 
          ) G 
         INNER JOIN UserVDOT U 
         ON U.UserId = G.UserId 
          AND U.Created = G.Created 
        ) M 
       GROUP BY UserId 
       ORDER BY MaxVDOT DESC 
      ) R, (SELECT @'rank' := 0) foo 
    ) F 
WHERE F.UserId = @UserId; 

它現在將被視爲會話變量。

相關問題