Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does the := operator mean in mysql?

I have a mysql table (scho_id,school_name,school_views).

I was looking for a mysql query to get rank of schools on the basis of school_views.

I found this solution on 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; 

This solved my problem but I notice a new operator := in this query. I am curious to know the meaning and uses of this operator.

like image 656
prograshid Avatar asked Sep 07 '16 22:09

prograshid


People also ask

What is not equal in MySQL?

not equal to (<>, !=) operator. MySQL Not equal is used to return a set of rows (from a table) after making sure that two expressions placed on either side of the NOT EQUAL TO (<>) operator are not equal.


1 Answers

In MySQL, := is an assignment operator:

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

while = is an equality test:

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

Note that you CAN do both equality testing AND assignment with set queries:

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

which will cause @foo to be assigned false, the boolean result of 'bar' = 'baz'. It executes as the following:

SET @foo = ('bar' = 'baz'); SET @foo = false; 
like image 125
Marc B Avatar answered Sep 22 '22 17:09

Marc B