Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 从同一个表联接数据_Mysql_Database_Join - Fatal编程技术网

Mysql 从同一个表联接数据

Mysql 从同一个表联接数据,mysql,database,join,Mysql,Database,Join,我有一个表,包含学生的姓名、电子邮件、职位等,以及他们的状态,可以是Y或N。我想写一个查询,计算每种职位类型的数量,以及使用JOIN计算每种类型中Y和N的数量。也就是说,它将是一个包含三列的表:Position、StatusIsYes和StatusIsNo 我已经用下面的方法使用CASE子句完成了这项工作,但是我不知道如何使用JOIN子句完成这项工作 SELECT position, COUNT(CASE WHEN status = 'Y' THEN 1 ELSE NULL END) AS St

我有一个表,包含学生的姓名、电子邮件、职位等,以及他们的状态,可以是Y或N。我想写一个查询,计算每种职位类型的数量,以及使用JOIN计算每种类型中Y和N的数量。也就是说,它将是一个包含三列的表:Position、StatusIsYes和StatusIsNo

我已经用下面的方法使用CASE子句完成了这项工作,但是我不知道如何使用JOIN子句完成这项工作

SELECT position,
COUNT(CASE WHEN status = 'Y' THEN 1 ELSE NULL END) AS StatusIsYes,
COUNT(CASE WHEN status = 'N' THEN 1 ELSE NULL END) AS StatusIsNo
 FROM 
students GROUP BY crd
谢谢你的建议

编辑:我知道不使用联接就可以完成此操作,但我想知道如何使用联接完成此操作。

您不需要联接:

SELECT
    position,
    SUM(status = 'Y') AS StatusIsYes,
    SUM(status = 'N') AS StatusIsNo
FROM students
GROUP BY position
请注意,这种情况非常奇怪,因为在mysql中,只有true为1,false为0,所以条件之和计算它为true的次数:

您不需要连接:

SELECT
    position,
    SUM(status = 'Y') AS StatusIsYes,
    SUM(status = 'N') AS StatusIsNo
FROM students
GROUP BY position
请注意,这种情况下的分配相当奇怪,因为在mysql中,只有true为1,false为0,所以条件之和计算它为true的次数:

Try::

SELECT 
position,
COUNT(status = 'Y' ) AS StatusIsYes,
COUNT(status = 'N' ) AS StatusIsNo
 FROM 
students GROUP BY POSITION
试试看:


当您想从同一个表中获取记录时,可以使用自连接。 例如: 表名:员工 字段:EmpId、EmpName、ManagerId 现在,如果您想获得担任经理职务的员工的详细信息,我们需要编写如下查询: 从EmployeeDetails e1、EmployeeDetails e2中选择e1.EmpId、e1.EmpName,其中e1.EmpId=e2.ManagerId

希望它能帮助你


有关更多信息,请查看链接。

如果要从同一个表中获取记录,可以使用自连接。 例如: 表名:员工 字段:EmpId、EmpName、ManagerId 现在,如果您想获得担任经理职务的员工的详细信息,我们需要编写如下查询: 从EmployeeDetails e1、EmployeeDetails e2中选择e1.EmpId、e1.EmpName,其中e1.EmpId=e2.ManagerId

希望它能帮助你


欲了解更多信息,请查看链接。

谢谢-这看起来确实比我拥有的要干净得多。然而,我想知道如何使用JOIN来实现它;有人告诉我这是可能的,但我不知道怎么做。但无论如何+1不仅不需要连接,而且使用连接也没有任何意义-这样做只是为了这样做,但会是一个糟糕的解决方案。你是对的。我只是想更多地练习连接子句,而使用连接的解决方案在这里对我来说并不明显,谢谢-这看起来确实比我拥有的要干净得多。然而,我想知道如何使用JOIN来实现它;有人告诉我这是可能的,但我不知道怎么做。但无论如何+1不仅不需要连接,而且使用连接也没有任何意义-这样做只是为了这样做,但会是一个糟糕的解决方案。你是对的。我只是想更多地练习连接子句,而使用连接的解决方案对我来说并不明显here@Bohemian:你太快了…:-@Bohemian:你太快了…:-