Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL SQL选择查询和替换值_Mysql - Fatal编程技术网

MySQL SQL选择查询和替换值

MySQL SQL选择查询和替换值,mysql,Mysql,我有一个SQL查询,其中我有一些case语句和count,以便透视我的“clase x”行,它返回类似这样的结果 | Nombre Completo | Clase 1 | Clase 2| -------------------------------------- | Example name | 3 | 5 | -------------------------------------- 我需要的是,替换数字,如果数字大于0,则替换为是,否则替换为否。 我该怎

我有一个SQL查询,其中我有一些case语句和count,以便透视我的“clase x”行,它返回类似这样的结果

| Nombre Completo | Clase 1 | Clase 2|
--------------------------------------
| Example name   |   3      |    5   |
--------------------------------------
我需要的是,替换数字,如果数字大于0,则替换为是,否则替换为否。 我该怎么做? Mysql查询:

SELECT  DISTINCT concat_ws(' ',U.firstname, U.lastname) as  Nombre_Completo,
COUNT(CASE WHEN b.name="Clase 1" THEN b.name END) Clase1,
COUNT(CASE WHEN b.name="Clase 2" THEN b.name END) Clase2,
COUNT(CASE WHEN b.name="Clase 3" THEN b.name END) Clase3,
COUNT(CASE WHEN b.name="Clase 4" THEN b.name END) Clase4,
COUNT(CASE WHEN b.name="Clase 5" THEN b.name END) Clase5,
COUNT(CASE WHEN b.name="Clase 6" THEN b.name END) Clase6,
COUNT(CASE WHEN b.name="Clase 7" THEN b.name END) Clase7,
COUNT(CASE WHEN b.name="Clase 8" THEN b.name END) Clase8,
COUNT(CASE WHEN b.name="Clase 9" THEN b.name END) Clase9,
COUNT(CASE WHEN b.name="Clase 10" THEN b.name END) Clase10,
COUNT(CASE WHEN b.name="Clase 11" THEN b.name END) Clase11,
COUNT(CASE WHEN b.name="Clase 12" THEN b.name END) Clase12
FROM mdl_logstore_standard_log as L
LEFT JOIN mdl_course as C ON L.courseid = C.id 
left JOIN mdl_user as U on L.userid = U.ID
JOIN mdl_bigbluebuttonbn AS b ON L.objectid = b.id
JOIN mdl_role_assignments AS ra ON L.userid = ra.userid
JOIN mdl_role AS r ON r.id = ra.roleid
WHERE (C.shortname LIKE '%CSG012020%') AND (ra.roleid=5)  AND (ra.roleid NOT IN (3,4))
GROUP BY Nombre_Completo;
使用
IF()
测试
COUNT()的结果

每:

在您的代码中,可以编写为:

SUM(b.name='Clase X')
因为MySql将像
b.name='Clase 1'
这样的布尔表达式计算为
1
(true)或
0
(false)。

此外,如果任何整数值
0
true
不同于
0
,则可以将其解释为
false

因此,您可以这样编写查询:

SELECT concat_ws(' ', U.firstname, U.lastname) Nombre_Completo,
       CASE WHEN SUM(b.name='Clase 1') THEN 'yes' ELSE 'no' END Clase1,
       CASE WHEN SUM(b.name='Clase 2') THEN 'yes' ELSE 'no' END Clase2,
       CASE WHEN SUM(b.name='Clase 3') THEN 'yes' ELSE 'no' END Clase3,
       CASE WHEN SUM(b.name='Clase 4') THEN 'yes' ELSE 'no' END Clase4,
       CASE WHEN SUM(b.name='Clase 5') THEN 'yes' ELSE 'no' END Clase5,
       CASE WHEN SUM(b.name='Clase 6') THEN 'yes' ELSE 'no' END Clase6,
       CASE WHEN SUM(b.name='Clase 7') THEN 'yes' ELSE 'no' END Clase7,
       CASE WHEN SUM(b.name='Clase 8') THEN 'yes' ELSE 'no' END Clase8,
       CASE WHEN SUM(b.name='Clase 9') THEN 'yes' ELSE 'no' END Clase9,
       CASE WHEN SUM(b.name='Clase 10') THEN 'yes' ELSE 'no' END Clase10,
       CASE WHEN SUM(b.name='Clase 11') THEN 'yes' ELSE 'no' END Clase11,
       CASE WHEN SUM(b.name='Clase 12') THEN 'yes' ELSE 'no' END Clase12
FROM mdl_logstore_standard_log as L
LEFT JOIN mdl_course as C ON L.courseid = C.id 
left JOIN mdl_user as U on L.userid = U.ID
JOIN mdl_bigbluebuttonbn AS b ON L.objectid = b.id
JOIN mdl_role_assignments AS ra ON L.userid = ra.userid
JOIN mdl_role AS r ON r.id = ra.roleid
WHERE (C.shortname LIKE '%CSG012020%') AND (ra.roleid=5)  AND (ra.roleid NOT IN (3,4))
GROUP BY Nombre_Completo;
我删除了
DISTINCT
,因为它是不需要的,因为您按Nombre_Completo进行分组

SUM(b.name='Clase X')
SELECT concat_ws(' ', U.firstname, U.lastname) Nombre_Completo,
       CASE WHEN SUM(b.name='Clase 1') THEN 'yes' ELSE 'no' END Clase1,
       CASE WHEN SUM(b.name='Clase 2') THEN 'yes' ELSE 'no' END Clase2,
       CASE WHEN SUM(b.name='Clase 3') THEN 'yes' ELSE 'no' END Clase3,
       CASE WHEN SUM(b.name='Clase 4') THEN 'yes' ELSE 'no' END Clase4,
       CASE WHEN SUM(b.name='Clase 5') THEN 'yes' ELSE 'no' END Clase5,
       CASE WHEN SUM(b.name='Clase 6') THEN 'yes' ELSE 'no' END Clase6,
       CASE WHEN SUM(b.name='Clase 7') THEN 'yes' ELSE 'no' END Clase7,
       CASE WHEN SUM(b.name='Clase 8') THEN 'yes' ELSE 'no' END Clase8,
       CASE WHEN SUM(b.name='Clase 9') THEN 'yes' ELSE 'no' END Clase9,
       CASE WHEN SUM(b.name='Clase 10') THEN 'yes' ELSE 'no' END Clase10,
       CASE WHEN SUM(b.name='Clase 11') THEN 'yes' ELSE 'no' END Clase11,
       CASE WHEN SUM(b.name='Clase 12') THEN 'yes' ELSE 'no' END Clase12
FROM mdl_logstore_standard_log as L
LEFT JOIN mdl_course as C ON L.courseid = C.id 
left JOIN mdl_user as U on L.userid = U.ID
JOIN mdl_bigbluebuttonbn AS b ON L.objectid = b.id
JOIN mdl_role_assignments AS ra ON L.userid = ra.userid
JOIN mdl_role AS r ON r.id = ra.roleid
WHERE (C.shortname LIKE '%CSG012020%') AND (ra.roleid=5)  AND (ra.roleid NOT IN (3,4))
GROUP BY Nombre_Completo;