从同一个表中加入数据

时间:2013-01-11 14:04:18

标签: 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 StatusIsYes,
COUNT(CASE WHEN status = 'N' THEN 1 ELSE NULL END) AS StatusIsNo
 FROM 
students GROUP BY crd

我感谢任何建议!

编辑:我知道可以在没有的情况下使用JOIN完成但是我想知道如何使用来加入

3 个答案:

答案 0 :(得分:2)

您不需要加入:

SELECT
    position,
    SUM(status = 'Y') AS StatusIsYes,
    SUM(status = 'N') AS StatusIsNo
FROM students
GROUP BY position

请注意CASE的相当时髦的分配,因为在mysql(仅)中true1false0,所以{{1一个条件计算它的真实次数:)

答案 1 :(得分:1)

尝试::

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

答案 2 :(得分:1)

如果要从同一个表中获取记录,可以使用SELF JOIN 例如:
表名:员工
字段:EmpId,EmpName,ManagerId
现在,如果您想获得经理位置的Empolyees的详细信息,我们需要编写如下查询:
SELECT e1.EmpId,e1.EmpName FROM EmployeeDetails e1,EmployeeDetails e2,其中e1.EmpId = e2.ManagerId;

希望它会对你有所帮助。

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