mysql = 什么意思,:=运算符在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.

解决方案

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值