我在MySQL中有一个表格,其中包含许多普通字段和一些“审批”字段,如果相关数据已获批准则包含1
,否则为0
。例如,
*==============================================================*
* id | fname | lname | fname_approved | lname_approved | ...*
*--------------------------------------------------------------*
* ... | ... | ... | 0 | 1 | ...*
实际上,还有更多列,但它更多相同。我希望能够做的是选择一个值,如果all_approved
字段的所有包含1并且相等,则_approved
等于1如果任何字段包含0,则为0.在SQL中是否有任何简单的方法可以执行此操作,或者我是否需要在应用程序逻辑中处理它?</ p>
答案 0 :(得分:6)
你可以使用像
这样的乘法select (fname_approved * lname_approved) as all_approved from my_table;
这样,如果任何_approved为0,则all_approved将为0,否则为1
答案 1 :(得分:1)
尝试此查询,
SELECT IF(fname_approval = 1 && lname_approval = 1 && mname_approval= 1, 'all_approved ', 'Not-Approved') AS approved_status
from table_name
答案 2 :(得分:0)
如果批准列的数量是固定的,并且其中的值是0或1,那么这样的事情会有所帮助
Select (fname_approval + lname_approval + mname_approval) from <table_name>
此查询将为您提供总数,例如3 ..这意味着所有已被批准,因为列数与总数相同。如果总数较少,则意味着您没有获得所有批准。
您需要对列数进行硬编码(这不是一个好主意)。希望这会有所帮助。
答案 3 :(得分:0)
select
case
when fname_approved=1 and lname_approved=1 then 1 as all_approved
else 0 as not_approved
end ;
from my_table