mysql - 选择不同但具有列的值

标签 mysql

这就是我想要的。

假设我们有这张表

Name  Email          Department             Branch
------------------------------------------------------
John  john@test.ca   Information Technology SAP
John  john@test.ca   Not Available          Not Available
Bret  brett@test.ca  Emergency Response     911
Bret  brett@test.ca  Not Available          Not Available
diana diana@test.ca  Not Available          Not Available

现在我基本上想要的是得到以下结果:

如果约翰有“信息技术”和“不可用”,则“信息技术”将成为优先级。基本上,如果约翰不属于任何其他部门,它只会显示“不可用”行。 所以结果表将是这样的:

Name  Email         Department             Branch
-----------------------------------------------------
John  john@test.ca  Information Technology SAP
Bret  brett@test.ca Emergency Response     911
Diana diana@test.ca Not Available          Not Available

谢谢!

最佳答案

对于此示例数据,您需要一个 CASE 表达式来检查 'Not available' 并将其视为 NULL,以便您可以聚合 (与 MINMAX):

select name, email,
  coalesce(
    max(case when department = 'Not Available' then null else department end),
    'Not Available'
  ) department,
  coalesce(
    max(case when branch = 'Not Available' then null else branch end),
    'Not Available'
  ) branch
from tablename
group by name, email

请参阅demo .
结果:

| name  | email         | department             | branch        |
| ----- | ------------- | ---------------------- | ------------- |
| Bret  | brett@test.ca | Emergency Response     | 911           |
| diana | diana@test.ca | Not Available          | Not Available |
| John  | john@test.ca  | Information Technology | SAP           |

关于mysql - 选择不同但具有列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59632202/

相关文章:

java - Spring data JPA exists By Field在MySQL中不区分大小写,如何让它区分大小写

php - SQL/PHP 语法错误

php - PDO 查询取决于完成的输入

mysql - MYSQL 中 IF 内的 SET(?)

php - php mysql中的数据输入不正确

java - 如何将Arduino中的数据存入mysql数据库并计算平均值

php - 插入查询执行两次而不是一次

mysql - 在 Amazon EC2 上安装 DBD::mysql 时无法找到 mysql_config

php - 使用 php - pdf 和 jpeg 进行图像上传文件类型验证

asp.net - 无法检测到 CheckBox 的状态