一点新手,可能是一个非常基本的问题,但是让我发疯了。
我有一个mysql表。我有一个有记录ID的记录,还有六个包含照片名称的字段。
所以, Record_id,photo1,photo2,photo3,photo4,photo5,photo6
我希望得到最终结果,我有一个名为“TOTAL”的列,它显示了有多少记录在其中的照片数量为TOTAL。因此,记录1可能总共有5张照片,记录2可能有3张照片,而记录3可能总共有该记录的NO记录等?
现在上传到现场的一些照片名称可能包含数字,即photo244.jpg或pic3993.jpg等 - 所以我不希望这些数字加在一起,我只是在寻找是否该字段在其中有一个名称等,这将被计为1以添加到总数。因此,页面上的最终结果是记录13(例如)总共有4张照片等 - 抱歉,如果不是一个好的解释!
它可能与SUM或COUNT有关,但花了很多时间试图获得组合或正确的键/语法!可以通过给出一个mysql select语句的例子来帮助讨好 - 不胜感激!
答案 0 :(得分:2)
我认为如果没有照片,则字段photoX为空或为空 因此,如果字段为空或空,则使用CASE作为输出0,否则使用1。
SELECT Record_id
,
CASE WHEN (photo1 IS NULL OR photo1 = '') THEN 0 ELSE 1 END
+ CASE WHEN (photo2 IS NULL OR photo2 = '') THEN 0 ELSE 1 END
+ CASE WHEN (photo3 IS NULL OR photo3 = '') THEN 0 ELSE 1 END
+ CASE WHEN (photo4 IS NULL OR photo4 = '') THEN 0 ELSE 1 END
+ CASE WHEN (photo5 IS NULL OR photo5 = '') THEN 0 ELSE 1 END
+ CASE WHEN (photo6 IS NULL OR photo6 = '') THEN 0 ELSE 1 END
AS Total
FROM myTable
答案 1 :(得分:0)
这样的话可以通过Photo1
,Photo2
等来计算:
SELECT
SUM(CASE WHEN photo1 IS NOT NULL THEN 1 END) AS Photo1Count,
SUM(CASE WHEN photo2 IS NOT NULL THEN 1 END) AS Photo2Count,
SUM(CASE WHEN photo3 IS NOT NULL THEN 1 END) AS Photo3Count,
SUM(CASE WHEN photo4 IS NOT NULL THEN 1 END) AS Photo4Count,
SUM(CASE WHEN photo5 IS NOT NULL THEN 1 END) AS Photo5Count
FROM MyTable
这样的事情会算出有多少行至少有一张照片:
SELECT SUM (
CASE WHEN
photo1 IS NOT NULL OR
photo2 IS NOT NULL OR
photo3 IS NOT NULL OR
photo4 IS NOT NULL OR
photo5 IS NOT NULL THEN 1 END)
FROM MyTable
请注意,这些查询适用于总计。它们不按行显示活动。如果需要按行进行活动,请尝试Scorpi0或Michael Sivolobov的答案。
答案 2 :(得分:0)
这将是最好的查询:
SELECT
Record_id,
(6 - IFNULL(photo1,1) - IFNULL(photo2,1) - IFNULL(photo3,1) - IFNULL(photo4,1) - IFNULL(photo5,1) - IFNULL(photo6,1)) AS TOTAL
FROM
table