CASE WHEN sdd1.cnname IS NOT NULL THEN sdd1.cnname ELSE iit.send_status END sendStatusName,
时间: 2023-12-14 09:37:41 浏览: 101
这是一个 SQL 查询语句中的 CASE WHEN 子句,它的作用类似于一个条件语句。它的语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
...
ELSE default_result
END
```
在这个具体的查询语句中,它的作用是根据条件判断 sdd1.cnname 是否为 NULL,如果不为 NULL,则将 sdd1.cnname 作为 sendStatusName 的值,否则将 iit.send_status 作为 sendStatusName 的值。最后将 sendStatusName 作为查询结果集的一列输出。
相关问题
select tpi.id, sd.dept_id, sd.dept_name, tpi.year, tpi.project_name, tpi.construction_company, tpc.company_name as constructionCompanyName, (select sdd.dict_label from sys_dict_data sdd where sdd.dict_type = 'contract_segment' and sdd.dict_value = tpi.contract_segment) contractSegmentName, tpi.is_section from t_project_info tpi left join t_participating_company tpc on tpi.construction_company = tpc.id left join sys_dept sd on tpi.dept_id = sd.dept_id where tpi.del_flag = 0 and tpi.year = Date_format(now(),'%Y') and tpi.is_section = 0 and tpi.id not in(select group_concat(tci.project_id) from t_contract_info tci where tci.del_flag = 0 and tci.project_id != '');子查询语句和手动填的一致,结果却不一样
如果子查询语句和手动填的一致,但结果却不一样,可能是因为使用了 GROUP_CONCAT 函数来返回子查询结果中多个项目ID的字符串,而 NOT IN 语句中只能比较单个值,不能直接比较字符串。因此,你需要使用 INSTR 函数来判断子查询结果中是否包含指定的项目ID。例如:
SELECT tpi.id, sd.dept_id, sd.dept_name, tpi.year, tpi.project_name, tpi.construction_company, tpc.company_name as constructionCompanyName, (SELECT sdd.dict_label FROM sys_dict_data sdd WHERE sdd.dict_type = 'contract_segment' AND sdd.dict_value = tpi.contract_segment) contractSegmentName, tpi.is_section
FROM t_project_info tpi
LEFT JOIN t_participating_company tpc ON tpi.construction_company = tpc.id
LEFT JOIN sys_dept sd ON tpi.dept_id = sd.dept_id
WHERE tpi.del_flag = 0 AND tpi.year = DATE_FORMAT(NOW(), '%Y') AND tpi.is_section = 0 AND NOT EXISTS (
SELECT 1
FROM t_contract_info tci
WHERE tci.del_flag = 0 AND tci.project_id != '' AND INSTR(CONCAT(',', tci.project_id, ','), CONCAT(',', tpi.id, ','))
)
这里使用了 CONCAT 函数将子查询结果中多个项目ID拼接成一个字符串,然后使用 INSTR 函数来判断是否包含指定的项目ID。注意,这里在子查询中也使用了 NOT IN,但是为了避免子查询结果中包含 NULL 值导致 NOT IN 失效,使用了 NOT EXISTS 来避免这个问题。
UPDATE sdd_discover_task SET `status` = 30 WHERE `code` = 'DIS20211020163022787';
这是一条 SQL 语句,它的作用是将表格 sdd_discover_task 中 code 字段为 'DIS20211020163022787' 的记录的 status 字段更新为 30。其中,`UPDATE` 是 SQL 中用于更新记录的关键字,`sdd_discover_task` 是表格的名称,`SET` 是设置要更新的字段和值,`status` 是要更新的字段,30 是要更新的值,`WHERE` 是筛选条件,`code` 是要筛选的字段,'DIS20211020163022787' 是要筛选的值。
阅读全文