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.
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.
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With