mysql - MySQL 通过乘以其他行中的值返回 1 或 0
问题描述
我有一个名为应用程序的表。此表有一个名为 status 的列。一个用户可以有许多应用程序。我想编写一个查询来根据整体状态检索用户应用程序的状态。如果应用程序的每个状态都是 1,则查询需要返回 1,否则返回 0。(逻辑上和每个状态)。
我正在使用 BIT_AND 来执行此操作。如果有两个或多个要比较的数据,此函数会显示正确的结果。如果只有一条记录,则值为 1。
For example
0 * 0 => 1 (status) **This is error. Correct should be 0**
0 => 1 (status) **This is error. Correct should be 0**
1 * 0 = 0 (status)
我正在使用这个查询。
SELECT bit_and(application.status)
from applicant_applications application
where application.applicant_id = 1;
这个问题可以很容易地在程序中解决。但我正在查询中寻找一些东西。提前致谢
解决方案
您可以使用几个聚合函数来确定查询结果。就像是
SELECT IF(SUM(aa.status) = COUNT(DISTINCT aa.id), 1, 0) as `status`
FROM applicant_applications aa
WHERE aa.applicant_id = 1
GROUP BY aa.applicant_id;
足以检查所有应用程序的状态是否为 1。
要测试,请查看这个小提琴:
推荐阅读
- google-bigquery - 如何从 bigquery 将 gzip 压缩的 json 文件上传到 gcs 存储桶
- javascript - 使用应用程序脚本将表格图表从谷歌电子表格发送到松弛
- python - 开发回合制战斗系统的问题
- html - Flexbox space-between 均匀的项目分布
- django - 有没有办法从 django admin 动态添加 html 文件?
- angular - 更新 Angular 响应式表单中的验证器
- istio - 带有网状网关的 Istio VirtualService 委托
- assembly - 嘿,我有一个关于 BSS 和 DATA 部分的问题
- windows - Windows主机的docker中的蓝牙
- kubernetes - 是否也可以在部署时触发 kubernetes cronjob?