MySQL返回优先级值,否则返回其他值

时间:2016-12-19 23:13:01

标签: mysql sql

我有一张桌子(这是一张模拟桌子),

+------------+------+--------+
|    Name    | Code | Active |
+------------+------+--------+
| Sales      |   55 |      1 |
| Sales      |   55 |      0 |
| IT         |   22 |      1 |
| Production |   33 |      1 |
| Production |   33 |      0 |
| Marketing  |   77 |      0 |
| Marketing  |   77 |      0 |
+------------+------+--------+

我想返回一份不同名称和代码的列表。但是,我想确定部门是否有效。因此,如果销售中有1处于活动状态且0处于活动状态,则它们处于活动状态,但是它们只有零,那么它们不是。

我尝试了各种方法并阅读了几十篇SO帖子,但没有取得任何进展。

我想要实现的输出是:

+------------+------+--------+
|    Name    | Code | Active |
+------------+------+--------+
| Sales      |   55 |      1 |
| IT         |   22 |      1 |
| Production |   33 |      1 |
| Marketing  |   77 |      0 |
+------------+------+--------+

如何将Active列的优先级设置为值1,但如果具有相同代码的所有条目的值均为0(例如营销),则仍会返回条目?

1 个答案:

答案 0 :(得分:2)

GROUP BY名称和代码,获取Active的最大值。 (假设0和1是活动列的可能值)

SELECT Name,Code,MAX(Active) active
FROM tablename
GROUP BY Name,Code