0
|
weibwLv7高级互助发布于2022-9-27 20:50(编辑于 2022-9-27 21:01)
|
你这个结构,一旦renyuan不为空,那SQL语句就是错的啊 你应该在where后面加个1=1
|
-
用户rMHep1215(提问者)
- where 1=1我加了 加在前面了 没写出来 前面也有结构 是1=1 ${} 后面跟的这个 IF
-
用户rMHep1215(提问者)
- SQL语句预览数据集的时候没报错 但是在主页面的时候不行提示错误 Unknown column \'renyuan\' in \'where clause\'
-
用户rMHep1215(提问者)
- 人员不为空 且不在 (总院领导)所主管的项目 里的时候 数据集里是空的 但是前台页面提示报错 是SQL哪里的问题呢
-
weibw 回复 用户rMHep1215(提问者)
- 反正看你提供的已有的SQL,我只能定位问题到这,你要不提供一下完整的SQL的截图?
-
用户rMHep1215(提问者) 回复 weibw
- SELECT project_name,leader_name,current_progress,previous_progress,research_dept_name,proj_from,project_type_name,start_time,end_time ${if(外委课题 = \'显示\',\',deleg_subj_name\',\"\")}
from (select * ,left(start_time,4)as year ,case when end_time > now() then \'进行中\' else \'已结束\' end as \'是否完工\' ${switch(rylx,\"所负责的项目\",\",leader_name as renyuan \",\"(总院领导)所主管的项目\",\",approver_name as renyuan \",\"(部门领导)所分管的项目\",\",auditor_name as renyuan \",\"所负责的外委课题\",\",responsible_user_name as renyuan \",\"筛选条件:无\",\"\")}
FROM `zy-data-theme`.t_proj_query_list where end_time<>\' \')temp1
where 1=1 ${if(or(len(project_type_name) == 0,project_type_name = \"所有\"),\"\",\"and project_type_name = \'\" + project_type_name + \"\'\")}
${if(or(len(pm_type) == 0,pm_type = \"所有\"),\"\",\"and pm_type = \'\" + pm_type + \"\'\")} ${if(or(len(project_type_name) == 0,project_type_name = \"所有\"),\"\",\"and project_type_name = \'\" + project_type_name + \"\'\")} ${if(len(project_name) == 0,\"\",\"and project_name like \'%\" + project_name + \"%\'\")} ${if(or(len(year) == 0,year = \"所有\"),\"\",\"and year = \'\" + year + \"\'\")}
${if(len(deleg_subj_name) == 0,\"\",\"and deleg_subj_name like \'%\" + deleg_subj_name + \"%\'\")} ${if(or(len(是否完工) == 0,是否完工 = \"所有\"),\"\",\"and 是否完工 = \'\" + 是否完工 + \"\'\")} ${if(or(len(research_dept_name) == 0,research_dept_name = \"所有\"),\"\",\"and research_dept_name = \'\" + research_dept_name + \"\'\")}
${if(rylx != \'筛选条件:无\',if(len(renyuan) == 0,\"\",\"and renyuan = \'\" + renyuan + \"\'\"),\'\')}
|
|
0
|
CD20160914Lv8专家互助发布于2022-9-28 09:00
|
你的语句目前看这样会报错: 假如参数:renyuan 里面录入了值,但是你的参数rylx 如果没有录入值,那么就会报这个错。因为你在子查询里面会根据rylx参数去返回字段renyuan。如果rylx没有录入参数。那么其实不返回 renyuan别名字段的。所以当参数renyuan有值,rylx没有值的时候。就会出错 类似如下语句: SELECT project_name, leader_name, current_progress, previous_progress, research_dept_name, proj_from, project_type_name, start_time, end_time ,deleg_subj_name from (select * , left(start_time, 4)as year , case when end_time > now() then '进行中' else '已结束' end as '是否完工' FROM `zy-data-theme`.t_proj_query_list where end_time<>' ')temp1 where 1=1 and renyuan = '测试' /*这个renyuan不在上面子查询temp1中有返回*/
|
|
|