【问题标题】:Mysql user defined variables and COUNTMysql用户定义变量和COUNT
【发布时间】:2011-04-15 16:27:51
【问题描述】:

mysql变量和count有问题
代码如下:

选择 @var := 2, @var := @var+2, 计数(birey_dil.birey_id)作为计数, @var := @var+count(birey_dil.birey_id), @var+1 来自 birey_dil

这是结果集:

+-----------+----------------+--------+------------ ----------------------------+--------+ | @var := 2 | @var := @var+2 |计数 | @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,有没有办法解决这个问题?

【问题讨论】:

  • 这太可怕了。你想达到什么目标?

标签: mysql variables count


【解决方案1】:

试试这个:
SELECT @var+1 FROM
(
SELECT @var := 2, @var := @var+2,
count(birey_dil.birey_id) as count,
@var := @var+count(birey_dil.birey_id),
from birey_dil
)x
似乎mysql首先评估所有@var[+constant];这是有道理的,因为它不需要数据库访问,然后才计算count(birey_dil.birey_id)。最后是@var := @var+count

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2011-11-05
    相关资源
    最近更新 更多