-3

次のようなmysqlのスクリプトがあります。

SET @waktu = NULL;
ユーザー名を選択し、
IF (@username = ユーザー名、
    IFNULL(TIMEDIFF(waktu,@waktu),0), @waktu:=waktu +
        NULL + LEAST(0,@username := username)) selisih_waktu, @waktu:=`waktu` as time
FROM mdl_temporer_log2 WHERE rolename = '学生'
ORDER BY ワクトゥ

その後、そのスクリプトを実行すると、次のように表示されます。

ユーザー名 | selisih_waktu| 時間          
-----------|---------------|--------------
aq | null | null | 05:55:07          
aq | null | null | 05:55:09   
メギ | null | null | 05:55:37    
メギ | null | null | 05:55:40         
メギ | null | null | 05:55:45     

しかし、もう一度実行すると、そのスクリプトは次のように表示されます。

ユーザー名 | selisih_waktu| 時間          
-----------|---------------|--------------
aq | 0 | 05:55:07          
aq | 00:00:02 | 05:55:09   
メギ | null | null | 05:55:37    
メギ | 00:00:03 | 05:55:40         
メギ | 00:00:03 | 05:55:45     

次のようにそのスクリプトから出力を取得したい:

ユーザー名 | selisih_waktu| 時間          
-----------|---------------|--------------
aq | null | null | 05:55:07          
aq | 00:00:02 | 05:55:09   
メギ | null | null | 05:55:37    
メギ | 00:00:03 | 05:55:40         
メギ | 00:00:03 | 05:55:45     

それで、私は混乱しています、そのスクリプトは間違っていますか、それとも正しいですか? そのスクリプトが間違っている場合、正しいスクリプトはどのようになっていますか?

4

1 に答える 1

0

問題はここにあります:

...@waktu:=waktu + NULL + LEAST...

なぜNULLここに追加するのですか?NULLはゼロでも何でもなく、 ですunknown

Anything + unknown = unknown 

を取り除くだけ+ NULLです。

編集:

それについてもう少し読んだので、これはここにあります

LEAST(0,@username := username))

私にも意味がありません。LEAST()最小の引数を返しますが、リンゴとオレンジを比較しています。2 番目のパラメーターは、行の値を変数に割り当てるだけです。


クエリが何をすべきかを説明する必要があります(テーブルだけでなく、単語で)。そうしないと、この質問はあまり意味がなく、答えられません。

于 2013-06-23T11:02:31.520 に答える