在mysql中:=运算符是什么意思?

时间:2016-09-07 22:00:23

标签: mysql operators rank colon-equals

我有mysql表(scho_idschool_nameschool_views)。

我正在寻找一个mysql查询,以rank为基础获取school_views所学校。

我在stackoverflow上找到了这个解决方案。

SET @points := -1, @num := 0;
SELECT scho_id
, school_views
, @num := if(@points = school_views, @num, @num + 1) as school_rank
, @points := school_info.school_views as dummy
FROM school_info
ORDER BY school_views desc, scho_id asc;

这解决了我的问题,但我注意到此查询中有一个新的运算符:=。我很想知道这个算子的含义和用法。

1 个答案:

答案 0 :(得分:24)

在MySQL中,:=是一个赋值运算符:

SELECT @foo := 'bar';    // variable 'foo' now has value 'bar'
return value: 'bar'

=是一个相等测试:

SELECT @foo = 'hi mom'; // does variable 'foo' have the value 'hi mom';
return value: false   ('bar' == 'hi mom' -> false)

请注意,您可以使用set查询进行相等性测试和分配:

SET @foo = 'bar' = 'baz';

将导致@foo被赋予false,即'bar' = 'baz'的布尔结果。它执行如下:

SET @foo = ('bar' = 'baz');
SET @foo = false;