mysql语法

时间:2009-05-13 17:10:29

标签: mysql

在回复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 

有人可以提供或指出有关语法用法的更多信息。我不熟悉使用:=?

(由于积分,我无法在评论中要求进一步解释。)

感谢。

3 个答案:

答案 0 :(得分:2)

MySQL中的

a = bab进行比较,如果它们相等则返回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 =。

完全相同