【问题标题】:Count variable and LIMIT it in MySQL?在 MySQL 中计算变量并限制它?
【发布时间】:2014-11-24 07:15:44
【问题描述】:

我有下表,其中“myvariable”的一些结果是 1,而有些不是。我在 PHP 中使用此代码:

$result=mysql_query("
SELECT COUNT(*) AS `total` FROM `mytable` 
WHERE `myvariable`='1' 
ORDER BY `id` DESC 
LIMIT 15;"
);

$data=mysql_fetch_array($result);

$count = $data['total'];

echo $count;

如您所见,我需要计算 (1+1+1+1) 并在 mytable 中获得此“myvariable”的最终结果,但仅适用于最后 15 行,而不适用于整个表。 该怎么做?


更新,我可以得到这个结果:

myvariable:

1

0

1

1

1

0

0

0

0

1

0

0

0

1

0

但我不需要那个。我只需要一个数字,在这种情况下我的变量的数字必须是 6。

计算最后 15 个数字可以得到:

(1+0+1+1+1+0+0+0+0+1+0+0+0+1+0)=6

仅用于最后 15 行,而不是整个表的结果。

【问题讨论】:

标签: php mysql


【解决方案1】:

您可以使用子查询将您正在处理的行数限制为 15,然后对该子查询的结果执行计数:-

SELECT COUNT(*)
FROM
(
    SELECT * 
    FROM mytable 
    WHERE myvariable='1' 
    ORDER BY id desc 
    LIMIT 15
) sub0

我不确定您是否要在将行限制为 15 之前或之后根据 myvariable 排除行,因此您可能希望将 WHERE 子句移到子查询之外。

【讨论】:

    【解决方案2】:
    $result=mysql_query("SELECT SUM(myvariable) as total from mytable where myvariable='1' order by id desc LIMIT 15");
    

    使用 MySQL 的 sum() 函数。

    正如@tyteen4a03,评论建议,请不要在您的代码中使用mysql_* 函数。

    【讨论】:

    • 我尝试使用 sum() 但它在整个表中返回 myvariable 的正确结果,但我需要 myvariable 在最后 15 行中的结果。这是个问题。
    【解决方案3】:

    首先 -

    select count(*) as total from mytable;//to get the total
    $total = //store the result
    

    那么——

    "SELECT COUNT(*) as total from mytable where myvariable='1' LIMIT ".($total-15).", 15"
    

    您将获得最近 15 条结果

    【讨论】:

    • 你能给我写完整的代码吗?我试过了,但再次从整个表中获取结果,而不是从最后 15 行中获取结果。
    【解决方案4】:

    你可以在最后 15 个条目上试试这个

    "SELECT  COUNT(*) as total from mytable where myvariable='1' order by id desc LIMIT 15"
    

    order by id desc 将按降序排列您的记录

    limit 15 会将其限制为仅 15 个条目

    所以你会得到最后 15 个条目的结果

    【讨论】:

    • 它返回整个表的结果,而不是最后15行,试试吧。
    【解决方案5】:

    您可以运行以下查询:

    $result=mysql_query("SELECT id from mytable where myvariable='1' order by id desc LIMIT 15");
    $data=mysql_fetch_array($result);
    $count = count($data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多