gpt4 book ai didi

mysql - 如何从数据库中检索至少存在 10 个列值中的 3 个的记录?

转载 作者:行者123 更新时间:2023-12-01 00:27:56 25 4
gpt4 key购买 nike

我正在使用 Rails 3.2.2,我想从数据库中检索记录,其中 至少 10 个列值中的 3 个存在。也就是说,如果我有一个具有 10 个属性(表列)的类(MySQL 数据库表),其值可以是 nil(null),那么我想执行一个查询,以便返回对象(记录),其中至少存在这 10 个属性值中的 3 个(不是 null)。

这可能吗?如果可以,怎么做到的?

UPDATE 如果我有一个类(一个 MySQL 数据库表),它有 10 个属性(表列),其值可以是 nil(null ) ""(not null), 然后我想执行查询以返回对象 (记录),其中至少存在这 10 个属性值中的 3 个(不是 null 不是“”)。

最佳答案

您可以与测试每个单独列的总和进行比较 IS NOT NULL AND <> :

WHERE (  (colA IS NOT NULL AND colA <> ' ')
+ (colB IS NOT NULL AND colB <> ' ')
+ ...
+ (colJ IS NOT NULL AND colJ <> ' ')
) >= 3

这是有效的,因为每个测试的 bool 结果都隐式转换为 1 (如果为真)或 0 (如果为假);因此,总和是既不是 NULL 的列数也不' ' .

或者,您可以处理 NULL案例使用 IFNULL() :

WHERE (IFNULL(colA<>' ',0) + IFNULL(colB<>' ',0) + ... + IFNULL(colJ<>' ',0)) >= 3

关于mysql - 如何从数据库中检索至少存在 10 个列值中的 3 个的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com