基于某个选择来计算mySQL

时间:2012-07-10 17:35:58

标签: php mysql

全部, 假设我在mySQL中有以下Select语句:

$qry = "Select filename from upload where file_id='$file_id'";
$result = mysql_query($qry);
$resultset = mysql_fetch_array($result);

该查询工作正常,但我还想做的是包括在同一语句中同一文件名出现在该表中其他位置的次数,因此我只需运行一次mySQL语句而不是此结果中的文件名然后执行另一个查询,如下所示:

$qrycheck = "Select COUNT(filename) from upload where filename='$resultset[filename]'";

有没有在单个mySQL语句中执行此检查?

谢谢!

5 个答案:

答案 0 :(得分:2)

SELECT COUNT(filename) AS filenameOccurences, filename FROM upload WHERE filename = '$resultset[filename]' GROUP BY filename;

答案 1 :(得分:0)

SELECT u.filename, c.cnt
FROM upload AS u
INNER JOIN 
(
    SELECT COUNT(*) AS cnt, uu.filename 
    FROM upload AS uu
    GROUP BY uu.filename
) AS c ON u.filename = c.filename
WHERE u.file_id = '$file_id'

答案 2 :(得分:0)

自我加入是你的朋友。

$qry = "SELECT DISTINCT filename, a
    FROM (SELECT count(filename) AS a, file_id FROM upload GROUP BY file_id) AS x
    JOIN upload ON upload.file_id = x.file_id
    WHERE upload.file_id = '$file_id'";

DISTINCT有助于防止多次显示相同的文件名(尽管如果你只是抓住第一行,那真的无关紧要。)

答案 3 :(得分:0)

如果我理解正确,你有几个带有不同file_ids的'filename'实例(我想file_id是一个唯一的ID,所以计算file_id的出现是没有意义的 - 你得到1或0 ):

  file_id  filename
  1        filename1.jpg
  2        filename2.jpg
  3        filename1.jpg
  4        filename1.jpg

如果是这种情况,您必须自行加入上传:

  SELECT uploads.filename, count(names.instance) AS instances FROM upload AS uploads
       JOIN upload AS names ON (uploads.filename = names.filename)
       WHERE uploads.file_id = '$file_id' GROUP BY uploads.filename;

这将返回$ resultset ['filename']中的名称和$ resultset ['instances']中的实例数。

答案 4 :(得分:0)

它可以帮到你

SELECT COUNT( * ) AS  `Cnt` ,  `filename` 
FROM  `upload` 
GROUP BY  `filename`
limit 10;

你想要它

SELECT filename, count(*) as cnt 
from upload 
where file_id='###my_file_id###' 
group by filename;

您可以使用谷歌'mysql group by'

进行搜索
相关问题