Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果MySQL查询中有多个列等于某个值,如何返回true或false?_Mysql_Select_Subquery - Fatal编程技术网

如果MySQL查询中有多个列等于某个值,如何返回true或false?

如果MySQL查询中有多个列等于某个值,如何返回true或false?,mysql,select,subquery,Mysql,Select,Subquery,我有一个单独的DB表(MySQL),我正在运行一个简单的SELECT。在这个表中,我有3个字段,每个字段包含3个可能的值。在每种情况下,值都是相同的(“无”、“在线”、“物理”)。如果这些字段中的任何一个未设置为“无”,我希望在结果中为别名返回true或false值 在返回结果集后,我可以很容易地在PHP中对此进行评估,但是为了方便地对结果进行排序,如果可能的话,我宁愿在SELECT中生成true/false。因此,目前结果行可能如下所示: id: 1 trial_type_1: none t

我有一个单独的DB表(MySQL),我正在运行一个简单的SELECT。在这个表中,我有3个字段,每个字段包含3个可能的值。在每种情况下,值都是相同的(“无”、“在线”、“物理”)。如果这些字段中的任何一个未设置为“无”,我希望在结果中为别名返回true或false值

在返回结果集后,我可以很容易地在PHP中对此进行评估,但是为了方便地对结果进行排序,如果可能的话,我宁愿在SELECT中生成true/false。因此,目前结果行可能如下所示:

id: 1 
trial_type_1: none
trial_type_2: online
trial_type_3: none
在这种情况下,我希望查询返回:

id: 1
trial: True
如果所有的试用类型字段都设置为无,那么它将返回一个False的试用值。任何想法都非常感谢,因为我真的不知道从哪里开始,甚至不知道在线搜索什么!:)

这应该有效:

SELECT
    id,
    NOT (trial_type_1 IS NULL AND trial_type_2 IS NULL AND trial_type_3 IS NULL) AS trial
FROM ...
这可能会奏效:

SELECT id,
       (trial_type_1 <> 'none' 
        OR trial_type_2 <> 'none' 
        OR trial_type_3 <> 'none')  AS some_not_none
FROM ...
选择id,
(试用型\u 1“无”
或试用型\u 2“无”
或试用(类型为“无”)作为某些“无”
从…起
您可以使用MySQL:

您可以使用以下用例:

SELECT ID, CASE WHEN trial_type_1='none' AND trial_type_2='none' AND trial_type_3='none' THEN 'false' ELSE 'true' END
    FROM YourTable

我会在这里使用一个case语句,这是一个非常灵活的方法,非常有用

select id, 
(CASE WHEN trial_type_1 <> 'none' OR trial_type_2 <> 'none' 
           OR trial_type_3 <> 'none'
 THEN 'True' ELSE 'False' END) as trial
FROM q3773072
选择id,
(当审判类型为“无”或审判类型为“无”时的情况)
或试用型\u 3“无”
然后“真”或“假”结束)作为审判
从q3773072开始
但是,您也可以将其作为一个简单的逻辑操作来完成—这可能更接近您想要的,如下所示:

SELECT id, 
       (trial_type_1 <> 'none' OR  trial_type_2 <> 'none'  OR trial_type_3 <> 'none' )  as Trial  
from q3773072
选择id,
(试用型\u 1“无”或试用型\u 2“无”或试用型\u 3“无”)作为试用
从q3773072开始

正确的方法当然是将多个试用类型存储在不同的表中-当您开始对字段进行编号时,提示数据库模式需要更改。您还应该设置另一个表来定义试验类型及其定义,即它们是否是真正的试验


我可能会采用后一种方法,因为在将来的某个时候,您很可能会添加另一个试用类型,如果您做得不对,这将是一件痛苦的事情。

假设在数据库中输入的试用值“none”为
NULL
。阿门!“当您开始对字段进行编号时,提示数据库模式需要更改”Brill,谢谢Richard。。。在这种情况下,客户有一些产品,我需要指出试用访问。。。目前总共只有5个,但是的,我认为这里需要一些抽象的东西!:)
SELECT id, 
       (trial_type_1 <> 'none' OR  trial_type_2 <> 'none'  OR trial_type_3 <> 'none' )  as Trial  
from q3773072