mysql变量和计数有问题
代码如下:
SELECT @var := 2, @var := @var+2, count(birey_dil.birey_id) as count, @var := @var+count(birey_dil.birey_id), @var+1 from birey_dil
这是结果集:
+-----------+----------------+-------+----------------------------------------+--------+ | @var := 2 | @var := @var+2 | count | @var := @var+count(birey_dil.birey_id) | @var+1 | +-----------+----------------+-------+----------------------------------------+--------+ | 2 | 4 | 8 | 12 | 5 | +-----------+----------------+-------+----------------------------------------+--------+
我将 var 设置为 2
然后 2+2 = 4
然后我计算行数,结果是 8
@var := @var+count(birey_dil.birey_id)
返回 4+8 12 但是 @var+1 是 5
为什么 mysql 会这样?
@var+1 现在应该是 13,有没有办法解决这个问题?
最佳答案
试试这个:
SELECT @var+1 FROM<br/>
(<br/>
SELECT @var := 2, @var := @var+2,<br/>
count(birey_dil.birey_id) as count,<br/>
@var := @var+count(birey_dil.birey_id),<br/>
from birey_dil<br/>
)x
似乎mysql首先评估所有@var[+constant];这是有道理的,因为它不需要数据库访问,然后才计算 count(birey_dil.birey_id)
.最后它做到了@var := @var+count
.
关于Mysql用户定义变量和COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679694/