lambdaQueryWrapper.inSql(AdminInspectionTaskBasicInfo::getJcdh, "select JCDH from ADMIN_INSPECTION_TASK_SIGNATURE_INFO WHERE SFZHM='" + userinfo.getIdCard() + "' AND JCDH IS NOT NULL GROUP BY JCDH"); 解读
时间: 2024-04-03 08:34:23 浏览: 7
这段代码是使用Mybatis-Plus框架中的LambdaQueryWrapper类来构建查询条件,查询的表名是AdminInspectionTaskBasicInfo,查询条件是AdminInspectionTaskBasicInfo中的Jcdh字段在一个子查询的结果集中。子查询的SQL语句是"select JCDH from ADMIN_INSPECTION_TASK_SIGNATURE_INFO WHERE SFZHM='" + userinfo.getIdCard() + "' AND JCDH IS NOT NULL GROUP BY JCDH",是查询ADMIN_INSPECTION_TASK_SIGNATURE_INFO表中SFZHM字段等于userinfo中的身份证号码并且JCDH字段不为空的记录,然后按JCDH字段进行分组,返回JCDH字段的结果集。这个结果集会被作为in语句的参数,用于查询AdminInspectionTaskBasicInfo表中Jcdh字段在这个结果集中的记录。
相关问题
FROM zdrgk_zdrgj a inner join zdryk_bkgl b on a.zdrgj_xm = b.bkgl_zdrxm and a.zdrgj_sfzhm = b.bkgl_sfz and b.del_flag = #{DEL_FLAG_NORMAL}增加一个条件,a.zdrgj_sbid在b.bkgl_bkqy的字符串中有出现过
好的,您希望我为您生成的SQL语句是这样的:
```SQL
SELECT *
FROM zdrgk_zdrgj a
INNER JOIN zdryk_bkgl b ON a.zdrgj_xm = b.bkgl_zdrxm
AND a.zdrgj_sfzhm = b.bkgl_sfz
AND a.zdrgj_sbid LIKE CONCAT('%', b.bkgl_bkqy, '%')
WHERE b.del_flag = #{DEL_FLAG_NORMAL}
```
这条SQL语句使用了 INNER JOIN 连接 zdrgk_zdrgj 表和 zdryk_bkgl 表,并且增加了一个条件 a.zdrgj_sbid 在 b.bkgl_bkqy 的字符串中有出现过,同时保留了原本的条件 b.del_flag = #{DEL_FLAG_NORMAL}。
select a.sfzh,a.phone,string_agg(DISTINCT unnest(string_to_array(b.ry_type,c.ry_type, ',')), ',') as type from hgry.ods_hgry_hgdjb a left join (select sfzhm,ry_type from hgry.bq_ry_type) b on a.sfzh=b.sfzhm left join (select phone,ry_type from hgry.bq_ry_type) c on a.phone=c.phone group by a.sfzh,a.phone查询报错You might be able to move the set-returning function into a LATERAL FROM item.
这个错误提示是因为 `unnest()` 函数被用在了聚合函数 `string_agg()` 中,而 `unnest()` 函数返回的是一个集合,这可能会影响聚合结果,因此建议将这个函数移到 `LATERAL FROM` 子句中。
你可以尝试将 `unnest()` 函数移到 `LATERAL FROM` 子句中,如下所示:
```sql
SELECT a.sfzh, a.phone, string_agg(DISTINCT t.ry_type, ',') AS type
FROM hgry.ods_hgry_hgdjb a
LEFT JOIN LATERAL (
SELECT ry_type FROM hgry.bq_ry_type WHERE sfzhm = a.sfzh
UNION
SELECT ry_type FROM hgry.bq_ry_type WHERE phone = a.phone
) t ON true
GROUP BY a.sfzh, a.phone;
```
这个查询首先将 `sfzhm` 和 `phone` 分别与 `hgry.bq_ry_type` 表中的两个子查询进行匹配,然后使用 `UNION` 操作将两个子查询的结果合并。最后,使用 `string_agg()` 函数将去重后的结果集合并成一个字符串。注意,在这个查询中,`UNION` 操作将返回多行结果,因此需要使用 `LATERAL` 关键字将查询转换为关联子查询,以便于对每一行结果进行计算。
注意,这个查询仅供参考,可能需要根据你的具体业务场景进行调整。