我有一个名为application的表。该表具有名为状态的列。用户可以有许多应用程序。我想编写一个查询以根据整体状态检索用户应用程序的状态。如果应用程序的每个状态均为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;
可以在程序中轻松解决此问题。但是我在查询中寻找东西。预先感谢
答案 0 :(得分:0)
您可以使用几个聚合函数来确定查询结果。像
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。
要测试,请查看以下小提琴: