MySQL 选择具有相同字段值的多个连接对象的记录

标签 mysql

对标题表示歉意;通过具体示例,我的问题更加清楚。

我有两张表 - 一张用于人员,一张用于地址。我将它们组合在一起并选择了相关部分:

ID |  Address  | Address_Status
-------------------------------
1  | 2 Main St | Active
1  | 19 Elm Rd | Inactive
1  | 7 Red Ave | Active
2  | 9 Gold St | Inactive
2  | 3 Rich St | Inactive

我正在尝试选择拥有所有非事件地址的人员的 ID。这意味着在输出中,唯一的记录应该是 ID = 2。我尝试按 ID 对它们进行分组,然后使用 having (count(*) - count(Address_Status = 'I')) = 0,这是我目前为止最接近的结果。

最佳答案

如果用户根本没有地址,则应该忽略它们,是吗? 在这种情况下,我会喜欢这样的东西:

SELECT People.ID, People.Name, 
SUM(IF(Addresses.Address_Status = 'I', 1, 0)) AS InactiveCount, 
SUM(IF(Addresses.Address_Status != 'I', 1, 0)) AS ActiveCount, 
FROM People JOIN Addresses ON Addresses.personID = People.ID
GROUP BY People.ID
HAVING ActiveCount = 0 AND InactiveCount > 0

关于MySQL 选择具有相同字段值的多个连接对象的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638779/

相关文章:

php - 如何使用 PHP 将每个页面上选定的单选按钮相应地存储到数据库中?

php - Select2 jQuery 与 JSON MySQL

php - WordPress 通知 : non object property

c# - 如何在 C# 中使用 Linq 在 Sql 中进行条件连接?

mysql - vb net SQl查询问题

php - 正确设置我的 mysql 表

Mysql LEFT JOIN -> 获取最新主题id/主题标题

php - 当 StringBuilder 为 Null 时,它不会继续

mysql - 如何在Golang中存储和检索MySQL数据库中的图像数据

php - 为 SilverStripe 站点自动填充站点树项目