2

MySQL セッション変数を使用するクエリがあります (@rank 変数に注意してください)

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 を入力パラメータ変数として宣言する必要があると通知されます。

これを回避する方法はありますか?

ありがとう。

4

2 に答える 2

9

こんにちはアリソン!

私は最近同じ問題に直面していましたが、デフォルトでは、SQL 接続によってクエリでの変数の使用が無効になっていることがわかりました。この問題を解決するには、次のように接続文字列を有効にします。

接続文字列:

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

これを機能させるには、接続パラメーターAllow User Variables=Trueを入力する必要があります。

お役に立てば幸いです。

高木ひあご

于 2013-06-10T18:26:45.583 に答える