在回复stackoverflow(How do you select every n-th row from mysql)上的另一个问题时,有人提供了这个答案:
SELECT * FROM ( SELECT @row := @row +1 AS rownum, [column name]
FROM ( SELECT @row :=0) r, [table name] ) ranked WHERE rownum % [n] = 1
有人可以提供或指出有关语法用法的更多信息。我不熟悉使用:=?
(由于积分,我无法在评论中要求进一步解释。)
感谢。
答案 0 :(得分:2)
a = b
将a
与b
进行比较,如果它们相等则返回true
,否则返回false
。另一方面,@a := b
将<{1}}的值设置为@a
。
基本上,b
是比较运算符(“等于”),=
是赋值运算符(“set equal to”)。
编辑:我刚刚发现您可以在:=
语句中使用=
作为赋值运算符,因为在这些语句中没有比较。在SET
语句中,您必须使用SELECT
进行分配。
答案 1 :(得分:2)
来自http://dev.mysql.com/doc/refman/5.0/en/user-variables.html:
“对于SET,可以使用=或:=作为赋值运算符。
您还可以在SET以外的语句中为用户变量赋值。在这种情况下,赋值运算符必须是:=而不是=因为=在非SET语句中被视为比较运算符:
mysql> SET @t1=0, @t2=0, @t3=0;
mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |
+----------------------+------+------+------+
| 5 | 5 | 1 | 4 |
+----------------------+------+------+------+
“
答案 2 :(得分:0)
对我而言,它看起来与a =。
完全相同