Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
如何使用PHP函数countfrom1table(Mysql)从2个条件(2列)计算值_Php_Mysql - Fatal编程技术网

如何使用PHP函数countfrom1table(Mysql)从2个条件(2列)计算值

如何使用PHP函数countfrom1table(Mysql)从2个条件(2列)计算值,php,mysql,Php,Mysql,从数据库 ID Name Department position ================================ 1 A MK IT 2 B MK RD 3 C MK EN 4 D BD IT 5 E BD RD 6 F BD EN 7 G BD IT 8 H

从数据库

ID   Name Department position
================================
1    A    MK          IT
2    B    MK          RD
3    C    MK          EN
4    D    BD          IT
5    E    BD          RD
6    F    BD          EN
7    G    BD          IT
8    H    OB          IT  
9    I    MK          EN
如何编写代码以显示在表中,如下所示

在表中显示类似的内容

position/departmet    MK  BD   OB
===================================
IT                    1    2   1    
RD                    1    1   0   
EN                    2    1   0

我只是搞糊涂了。

CASE
试试看

SELECT position,
        SUM(CASE WHEN Department = 'MK' THEN 1 ELSE 0 END) MK,
        SUM(CASE WHEN Department = 'BD' THEN 1 ELSE 0 END) BD,
        SUM(CASE WHEN Department = 'OB' THEN 1 ELSE 0 END) OB            
FROM tableName
GROUP BY position
或者,如果列数未知,则使用
Prepared语句

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(case when Department = ''',
      Department,
      ''' then 1 ELSE 0 end) AS ',
      Department
    )
  ) INTO @sql
FROM tableName;

SET @sql = CONCAT('SELECT position, ', @sql, ' 
                   FROM tableName 
                   GROUP BY position');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

我已经编辑了我的q,代码是否相同,谢谢。第二个查询仍然可以工作,多了一个q选择位置,不,
MySQL
没有内置的
PIVOT
,我想你需要使用第二个查询。