如何在 if for MySQL 中使用 select
How to use select inside if for MySQL
我的查询出现“select 在该位置无效,需要一个表达式”错误:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4',
( if (select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0, 'Y', 'N'));
post 我读过:MYSQL SELECT WITHIN IF Statement
你能指出我该如何纠正这个问题吗?任何帮助表示赞赏!非常感谢!!!
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759',
'high blood pressure',
'2015-07-01',
'4',
CASE WHEN EXISTS ( select NULL
from tbl_disease
where disease_name='high blood pressure' )
THEN 'Y'
ELSE 'N'
END);
IF
语法为 IF(boolean expression, result expression if true, result expression if false)
。您可以对返回单个值作为布尔表达式的子查询进行比较,但子查询也需要用括号分隔。
所以你需要说:
if((select ...) > 0,'Y','N')
if 后面只有一个 (
,它期待下一个表达式。 (select ...)
或 (select ...) > 0
是一个表达式; select ...
不是。
将所有缺少的括号相加,您最终应该得到:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4', ( if (((select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0), 'Y', 'N')) );
删除不需要的:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4', if ((select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0, 'Y', 'N') );
我的查询出现“select 在该位置无效,需要一个表达式”错误:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4',
( if (select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0, 'Y', 'N'));
post 我读过:MYSQL SELECT WITHIN IF Statement
你能指出我该如何纠正这个问题吗?任何帮助表示赞赏!非常感谢!!!
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759',
'high blood pressure',
'2015-07-01',
'4',
CASE WHEN EXISTS ( select NULL
from tbl_disease
where disease_name='high blood pressure' )
THEN 'Y'
ELSE 'N'
END);
IF
语法为 IF(boolean expression, result expression if true, result expression if false)
。您可以对返回单个值作为布尔表达式的子查询进行比较,但子查询也需要用括号分隔。
所以你需要说:
if((select ...) > 0,'Y','N')
if 后面只有一个 (
,它期待下一个表达式。 (select ...)
或 (select ...) > 0
是一个表达式; select ...
不是。
将所有缺少的括号相加,您最终应该得到:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4', ( if (((select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0), 'Y', 'N')) );
删除不需要的:
insert into tbl_disease(nid, name, diagnosed_time, treatment_times, inherited)
values ('314759','high blood pressure','2015-07-01','4', if ((select count(distinct disease_name) from tbl_disease where disease_name='high blood pressure') >0, 'Y', 'N') );