在回答另一个关于堆栈溢出(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
有人能在这里提供或指出更多关于语法用法的信息吗?我不熟悉:=
的用法
发布于 2009-05-13 09:21:18
来自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 |
+----------------------+------+------+------+
“
发布于 2009-05-13 09:18:20
MySQL中的a = b
将a
与b
进行比较,如果相等则返回true
,否则返回false
。另一方面,@a := b
将@a
的值设置为b
。
基本上,=
是比较运算符("is equal to"),:=
是赋值运算符("set equal to")。
EDIT:我刚刚发现可以在SET
语句中使用=
作为赋值运算符,因为在这些语句中没有比较这样的东西。在SELECT
语句中,必须使用:=
进行赋值。
发布于 2009-05-13 09:13:58
对我来说,它看起来和一个=完全一样。
https://stackoverflow.com/questions/859220
复制