Mysql 从同一个表联接数据
我有一个表,包含学生的姓名、电子邮件、职位等,以及他们的状态,可以是Y或N。我想写一个查询,计算每种职位类型的数量,以及使用JOIN计算每种类型中Y和N的数量。也就是说,它将是一个包含三列的表:Position、StatusIsYes和StatusIsNo 我已经用下面的方法使用CASE子句完成了这项工作,但是我不知道如何使用JOIN子句完成这项工作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
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:你太快了…:-