2009-05-13 4 views
3

はStackOverflowの上ここでは別の質問(How do you select every n-th row from mysql)に対応して、誰かがこの答えを供給:MySQLの構文

SELECT * FROM (SELECT @row := @row +1 AS rownum, [column name] 
FROM (SELECT @row :=0) r, [table name]) ranked WHERE rownum % [n] = 1 

誰かがここでの構文の使用方法についての詳細を私に提供したり、ポイントでした。私は=の使用に慣れていない:?

(私がポイントによるコメントで、さらなる説明をお願いすることはできませんよ。)

感謝。

答えて

2

「SETについて、いずれか=または:=代入演算子として使用することができる

またSET以外のステートメント内のユーザ変数に値を割り当てることができ、このいます。 =及び=ため=非SET文の比較演算子として扱われない:場合、代入演算子は、である必要があり

mysql> SET @t1=0, @t2=0, @t3=0; 
mysql> SELECT @t1:=(@t2:=1)[email protected]:=4,@t1,@t2,@t3; 
+----------------------+------+------+------+ 
| @t1:=(@t2:=1)[email protected]:=4 | @t1 | @t2 | @t3 | 
+----------------------+------+------+------+ 
|     5 | 5 | 1 | 4 | 
+----------------------+------+------+------+ 

"

0

私にとっては、=とまったく同じように見えます。 MySQLで

2

a = bはそうbaを比較し、それらが等しいならtrueを返し、またはfalse。一方、@a := bの場合、@aからbの値をに設定します。

基本的には、=が比較演算子(「等しい」)であり、:=が代入演算子(「等しく設定」)です。

EDIT:私はちょうどそれらの中の比較のようなものがありませんよう、あなたが、SET文で代入演算子として=を使用できることが分かりました。 SELECTステートメントでは、割り当てに:=を使用する必要があります。 http://dev.mysql.com/doc/refman/5.0/en/user-variables.htmlから