Mysql 按两位列分组

Mysql 按两位列分组,mysql,Mysql,我想对值为true的两位列进行分组。但我有两个分开的列,在位列为真的情况下如何连接它们 SELECT employees.employee_id, employees.last_name, employees.first_name, employees.middle_name, employee_role.isAdmin, employee_role.isEmployee FROM employees INNER JOIN em

我想对值为true的两位列进行分组。但我有两个分开的列,在位列为真的情况下如何连接它们

SELECT     employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name, 
           employee_role.isAdmin, employee_role.isEmployee
FROM       employees
INNER JOIN employee_role ON employee_role.employee_id = employees.id
INNER JOIN passwords ON passwords.id = employees.password_id
WHERE      employees.employee_id = pIN_employeeId AND passwords.password = pIN_password;
草稿输出:

employee_id | last_name | first_name | middle_name | isAdmin | isEmployee
------------+-----------+------------+-------------+---------+------------
  20140540  | Armstrong | Billie Joe |     A       |   0     |    1
  20140540  | Armstrong | Billie Joe |     A       |   1     |    0
预期产出:

employee_id | last_name | first_name | middle_name | isAdmin | isEmployee
------------+-----------+------------+-------------+---------+------------
  20140540  | Armstrong | Billie Joe |     A       |   1     |    1

您可以将
Max
分组依据一起使用

SELECT     employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name, 
           Max(employee_role.isAdmin), 
           Max(employee_role.isEmployee)
FROM       employees
INNER JOIN employee_role ON employee_role.employee_id = employees.id
INNER JOIN passwords     ON passwords.id = employees.password_id
WHERE      employees.employee_id = pIN_employeeId AND passwords.password = pIN_password
GROUP BY   employees.employee_id;
如果employee_id不是主键,则还需要在
GROUP BY
子句中添加其他列:

GROUP BY   employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name;
在其他数据库中,甚至需要添加这些列

如果您只希望包括具有isAdmin位集记录的员工,并且还希望包括具有isEmployee集记录的员工,不包括所有其他情况,则添加如下
HAVING
子句:

SELECT     employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name, 
           Max(employee_role.isAdmin), 
           Max(employee_role.isEmployee)
FROM       employees
INNER JOIN employee_role ON employee_role.employee_id = employees.id
INNER JOIN passwords     ON passwords.id = employees.password_id
WHERE      employees.employee_id = pIN_employeeId AND passwords.password = pIN_password
GROUP BY   employees.employee_id
HAVING     Max(employee_role.isAdmin) = 1 
AND        Max(employee_role.isEmployee) = 1;

您可以将
Max
分组依据一起使用

SELECT     employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name, 
           Max(employee_role.isAdmin), 
           Max(employee_role.isEmployee)
FROM       employees
INNER JOIN employee_role ON employee_role.employee_id = employees.id
INNER JOIN passwords     ON passwords.id = employees.password_id
WHERE      employees.employee_id = pIN_employeeId AND passwords.password = pIN_password
GROUP BY   employees.employee_id;
如果employee_id不是主键,则还需要在
GROUP BY
子句中添加其他列:

GROUP BY   employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name;
在其他数据库中,甚至需要添加这些列

如果您只希望包括具有isAdmin位集记录的员工,并且还希望包括具有isEmployee集记录的员工,不包括所有其他情况,则添加如下
HAVING
子句:

SELECT     employees.employee_id, employees.last_name, 
           employees.first_name, employees.middle_name, 
           Max(employee_role.isAdmin), 
           Max(employee_role.isEmployee)
FROM       employees
INNER JOIN employee_role ON employee_role.employee_id = employees.id
INNER JOIN passwords     ON passwords.id = employees.password_id
WHERE      employees.employee_id = pIN_employeeId AND passwords.password = pIN_password
GROUP BY   employees.employee_id
HAVING     Max(employee_role.isAdmin) = 1 
AND        Max(employee_role.isEmployee) = 1;

我遇到了一个异常,SELECT list不在GROUP BY子句中。然后您还需要提到
GROUP BY
子句中的其他非Max ed列。在我的回答中看到额外的一段,非常感谢。我明白我错在哪里了。我还需要借助
MAX
MIN
函数对另一列进行分组
groupby
也起到了作用:)我遇到了一个异常,其中SELECT list不在GROUPBY子句中。然后您还需要提到
groupby
子句中的其他非Max ed列。在我的回答中看到额外的一段,非常感谢。我明白我错在哪里了。我还需要借助
MAX
MIN
函数对另一列进行分组<代码>分组依据也做了这件事:)