示例表:
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 文件中测试):
如果您有任何问题,请告诉我!
关于MySQL - 选择列值仅为 0 的行,按另一列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313132/