我有下表,其中'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
但我不需要那个。我只需要一个数字,在这种情况下,myvariable的数量必须是6。
计算最后15个数字可以得到:
(1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0)= 6
仅限最后15行,而不是整个表的结果。
答案 0 :(得分:1)
您可以使用子查询将要处理的行数限制为15,然后对该子查询的结果执行计数: -
SELECT COUNT(*)
FROM
(
SELECT *
FROM mytable
WHERE myvariable='1'
ORDER BY id desc
LIMIT 15
) sub0
我不确定您是否要在将行限制为15之前或之后基于 myvariable 排除行,因此您可能希望将WHERE子句移到子查询之外。
答案 1 :(得分:0)
$result=mysql_query("SELECT SUM(myvariable) as total from mytable where myvariable='1' order by id desc LIMIT 15");
使用MySQL的sum()功能。
作为@ tyteen4a03,评论建议,请不要在代码中使用mysql_*
个函数。
答案 2 :(得分:0)
首先 -
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个结果
答案 3 :(得分:0)
你可以尝试最后15个条目
"SELECT COUNT(*) as total from mytable where myvariable='1' order by id desc LIMIT 15"
order by id desc
将按降序排列您的记录
并且limit 15
会将其限制为仅限15个条目
因此,您将获得最近15个条目的结果
答案 4 :(得分:0)
您可以运行以下查询:
$result=mysql_query("SELECT id from mytable where myvariable='1' order by id desc LIMIT 15");
$data=mysql_fetch_array($result);
$count = count($data);