Nat*_*man 4 mysql select subquery
我有一个数据库表(MySQL),我正在运行一个简单的SELECT.在这个表中,我有3个字段,每个字段包含3个可能的值.在每种情况下,值都是相同的('无','在线','物理').如果其中任何一个字段未设置为"none",我想在结果中返回别名的true或false值.
在我返回结果集后,我可以很容易地在PHP中对此进行评估,但为了轻松地对结果进行排序,我宁愿在SELECT中生成true/false.所以目前结果行可能如下所示:
id: 1
trial_type_1: none
trial_type_2: online
trial_type_3: none
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望查询返回:
id: 1
trial: True
Run Code Online (Sandbox Code Playgroud)
如果所有trial_type字段都设置为none,那么它将返回False的试验值.任何想法都非常感激,因为我真的不知道从哪里开始,甚至在网上搜索什么!:)
我在其中使用了一个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
Run Code Online (Sandbox Code Playgroud)
但是,您可以将其作为一个简单的逻辑操作 - 可能更接近您想要的操作,如下所示:
SELECT id,
(trial_type_1 <> 'none' OR trial_type_2 <> 'none' OR trial_type_3 <> 'none' ) as Trial
from q3773072
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法当然是将多个trial_types存储在不同的表中 - 当您开始编号字段时,它是数据库模式需要更改的线索.您还应该设置另一个表来定义试验类型及其定义 - 即它们是否是真正的试验.
我可能会采用后一种方法,因为很有可能你将来会在某个时候添加另一种试用类型,如果你做得不对,那将是痛苦的.