MySQL - 选择列值仅为 0 的行,按另一列分组?

标签 mysql sql database select

示例表:

ID, foreign_id, status

ID唯一foreign_id 不是。示例行:

1, 1111, 0  
2, 2222, 0  
3, 3333, 1
4, 1111, 1
5, 4444, 0

我想选择的是只有状态为 0 的唯一 foreign_id。如果它的状态为 0 但具有相同外部 ID 的另一行的状态为 1,则不要不要选择那个 foreign_id。预期输出:

1, 2222, 0
5, 4444, 0

我可以选择 status = 0 并按 foreign_id 分组,但这只会选择状态为 0 的行,即使可能有另一行具有相同的状态foreign_id 状态为 1。

SELECT ID, foreign_id 
FROM table 
WHERE status = 0 
GROUP BY foreign_id

感谢任何帮助。

最佳答案

(我对此进行了编辑以证明它有效并澄清了一些事情):

您可能感兴趣的是 HAVING 语句。

您可以在 GROUP BY 之后使用 HAVING 语句。这是一个很好的解释: https://www.dofactory.com/sql/having

简而言之,HAVING 语句的作用是让您过滤 GROUP BY 表达式返回的数据。

试试这个:

SELECT 
     foreign_id, MAX(status) AS status
FROM
     myTable
GROUP BY 
     foreign_id
HAVING 
     MAX(status) = 0



这是一个工作示例(在基本的 MS Access 文件中测试):
enter image description here

然后我输入了这段代码:
enter image description here

我得到了这些结果:
enter image description here



如果您有任何问题,请告诉我!

关于MySQL - 选择列值仅为 0 的行,按另一列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313132/

相关文章:

大型 mysqldump 段错误 --where=(id IN ...)

sql - 如何使用一个 sql 查询为每个条件创建一个单独的列?

PHP+MS Access : Wildcard * being taken as a string when querying through PHP?

c# - 错误 :check the manual that corresponds to your MySQL server version for the right syntax to use near

java - 如何使用 hibernate 查询从电子邮件列表中过滤邮件域

sql - MySQL 查询需要更长的索引?

python - 在 Rackspace 云数据库实例中创建用户时的主机参数

database - 表示对象的表单的自定义字段

sql - JOINS 和 SUBQUERIES 之间有什么区别?我们可以用连接做的任何事情也可以用子查询来做,反之亦然吗?

php - SQL JOIN 返回太多行