首先,如果这是一个愚蠢的问题,我深感抱歉,因为说实话,它很可能就是一个愚蠢的问题。
我正在 MySQL 中创建一个包含四个 BOOLEAN 字段的表。我想要的是第五个计算出的 BOOLEAN 字段,当且仅当所有其他 BOOLEAN 都为真时,该字段才为真。基本上就是一个 AND 运算。在 MySQL 中有什么好方法可以做到这一点吗?谢谢!
答案1
我做了一些尝试(我不使用 MySQL 作为复杂的数据库)但我认为我找到了一个简单的解决方案 - 用“calculatedcol boolean as(booleancolumn1&booleancolumn2&booleancolumn3&booleancolumn4)”创建第五列 - 这样做似乎可以防止您将东西添加到计算列,但允许您查询它。
我做了一个快速测试并创建了一个表格如下:
create table deltest (id serial, v1 boolean, v2 boolean, v3 boolean, v4 boolean, v5 boolean as (v1&v2&v3&v4));
插入件需要采用以下形式
insert into deltest (v1,v2,v3,v4,v5) values (1,1,1,1);
另一种方法是创建一个普通表,然后创建一个视图,这样可以保持插入表中的“正常”语法,但只允许您使用计算表运行选择查询。插入时插入表中。读取需要计算布尔值的地方时,请使用视图。
当然,对于像包含多个布尔值的表这样简单的东西,可能更容易不在表级别执行此操作,而是简单地在选择查询中生成列。因为它们是布尔字段,所以您可以使用“&”运算符进行按位操作,就像我在上面的测试表中创建 v5 列一样。