(SELECT AL.RULE_ID,WM_CONCAT(AL.CUSTNO) FROM AC_FIA.TC_CALL_AI AL WHERE AL.RULE_ID != NULL group by AL.RULE_ID) 为什么!=null就没有数据
时间: 2024-03-08 18:50:04 浏览: 132
在 SQL 中,使用 "!=" 或 "<>" 操作符来判断某个值是否不等于另一个值。然而,当使用 "!=" 或 "<>" 操作符时,如果比较的值中包含 NULL,结果可能会出现意外的行为,因为 NULL 表示未知的值,它既不等于任何非 NULL 值,也不等于 NULL 本身。因此,当比较一个值和 NULL 时,结果永远是 UNKNOWN,而不是 TRUE 或 FALSE。为了正确地检查一个值是否为 NULL,应该使用 "IS NULL" 或 "IS NOT NULL" 操作符。
在你提供的 SQL 语句中,"!=" 操作符被用来比较 "AL.RULE_ID" 和 NULL,这是不正确的做法。正确的做法是使用 "IS NOT NULL" 操作符来判断 "AL.RULE_ID" 是否为 NULL,例如:
```
SELECT AL.RULE_ID, WM_CONCAT(AL.CUSTNO)
FROM AC_FIA.TC_CALL_AI AL
WHERE AL.RULE_ID IS NOT NULL
GROUP BY AL.RULE_ID;
```
这样做就能够正确地筛选出 "AL.RULE_ID" 不为 NULL 的记录,并返回符合条件的结果集。
相关问题
select CALL.RULE_ID ruleId, WM_CONCAT(distinct CON.STAFFID) idGroup, SUM(CASE WHEN CALL.CALLSTATUS != '-2' THEN 1 ELSE 0 END) callCount, SUM(CASE WHEN CALL.CALLRESULT = '1' OR CALL.CALLRESULT = '2' THEN 1 ELSE 0 END) resultCount, SUM(CASE WHEN CALL.CALLSTATUS = '-1' THEN 1 ELSE 0 END) waitCallCount, SUM(CASE WHEN CON.CALLBACKSTATUS = '1' THEN 1 ELSE 0 END) addSuccessCount from AC_FIA.TC_CALL_AI CALL LEFT JOIN AC_FIA.TC_WE_CONTACT CON ON CON.RULE_ID = CALL.RULE_ID <where> <if test="query.employeeGroup != null and query.employeeGroup != ''"> AND CALL.RULE_ID = #{query.employeeGroup} </if> </where> group by CALL.RULE_ID,CON.RULE_ID
这是一个 SQL 查询语句,用于从 AC_FIA 数据库的 TC_CALL_AI 和 TC_WE_CONTACT 表中获取数据。查询中包含了规则 ID,员工 ID 组,通话数量,结果数量,等待通话数量和添加成功数量等信息。其中,WM_CONCAT(distinct CON.STAFFID) idGroup 是用于将多个员工 ID 组合为一个字符串。而 <where> 和 <if> 标签则是用于动态生成查询条件的。groupBy 用于对结果进行分组,按照规则 ID 和员工 ID 进行分组。
SELECT u.id,u.username,u.password,u.name,u.sex,u.mobile,u.status,u.top_office_id,u.office_id,u.iconName,create_time,u.service_expiration_time, (SELECT l.logoAddress FROM t_sys_logo l WHERE u.iconName=l.iconName) as icon,u.user_photo as userPhotoUrl, (SELECT o.office_name FROM t_office o WHERE o.id = u.office_id) AS officeName, (SELECT o.office_logo FROM t_office o WHERE o.id = u.top_office_id) as officeLogoUrl, (SELECT o.office_name FROM t_office o WHERE o.id =u.top_office_id) as topOfficeName, uu.is_sys_role as sysRole,uu.role_id_list as roleIdList,uu.role_name_list as roleNameList FROM t_sys_user u left join (select tr.user_id,sum(sr.is_sys_role) is_sys_role,GROUP_CONCAT(sr.id) role_id_list,GROUP_CONCAT(sr.role_name) role_name_list from t_sys_role sr ,t_sys_user_roles tr where tr.del_flag=1 and tr.role_id=sr.id GROUP BY tr.user_id) uu on u.id=uu.user_id where DATE_SUB(CURDATE(), INTERVAL 90 DAY) <= DATE(u.service_expiration_time) AND u.del_flag = 1 ORDER BY u.service_expiration_time is null , u.service_expiration_time
这是一个查询语句,用于检索用户信息。它从表t_sys_user中选择了一些列,并连接了其他表来获取相关信息。查询的结果按照服务过期时间进行排序。
注意:这是一个复杂的查询语句,包含了子查询和嵌套查询。具体的查询逻辑可能需要结合数据库结构和数据来进行分析和调整。如果需要更详细的说明或修改,请提供更多的信息。