簡體   English   中英

基於某個選擇來計算mySQL

[英]Count in mySQL based on a certain select

全部,說我在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語句中執行此檢查嗎?

謝謝!

SELECT COUNT(filename) AS filenameOccurences, filename FROM upload WHERE filename = '$resultset[filename]' GROUP BY filename;
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'

自我加入是你的朋友。

$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有助於防止多次顯示相同的文件名(盡管如果你只是抓住第一行,它確實沒關系)。

如果我理解正確,你有幾個帶有不同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']中的實例數。

它可以幫到你

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;

你可以用google'mysql group by'搜索

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM