MySQL通过乘以其他行中的值来返回1或0

时间:2018-10-29 23:13:16

标签: mysql

我有一个名为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)

我的表如下所示 enter image description here

我正在使用此查询。

SELECT bit_and(application.status)
from applicant_applications application
where application.applicant_id = 1;

可以在程序中轻松解决此问题。但是我在查询中寻找东西。预先感谢

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。

要测试,请查看以下小提琴:

http://sqlfiddle.com/#!9/26a9bd/1