ith pro(c_id, f_id) as ( select pro_c_id c_id, group_concat(distinct pro_pif_id order by pro_pif_id) f_id from property where pro_type = 3 group by pro_c_id ) select t1.c_id c_id1, t2.c_id c_id2 from pro t1, pro t2 where t1.c_id < t2.c_id and t1.f_id = t2.f_id;
时间: 2024-04-24 21:22:48 浏览: 5
这是一个SQL查询语句,它使用了子查询和自连接来查找拥有共同f_id的不同c_id的组合。
首先,在with子句中定义了一个名为pro的子查询,它从property表中选择所有pro_type为3的记录,然后按pro_c_id进行分组,并使用group_concat函数将每个组中的pro_pif_id连接成一个字符串,保存在f_id列中。
然后,在主查询中,使用自连接将pro表与自身连接起来,找出所有拥有相同f_id但不同c_id的组合。最后,使用where子句过滤掉重复的组合。查询结果包括两个列:c_id1和c_id2,分别表示两个拥有共同f_id的不同c_id。
总的来说,这个查询是用来查找投资基金(pro_type=3)的投资者之间是否存在共同的投资项目(f_id相同),如果存在,则返回这些投资者的组合。
相关问题
with pro(c_id, f_id) as ( select pro_c_id c_id, group_concat(distinct pro_pif_id order by pro_pif_id) f_id from property where pro_type = 3 group by pro_c_id )
这是一个 MySQL 中的公用表表达式(CTE)语句,用于创建一个名为 pro 的临时表。该表包含两个字段:c_id 和 f_id,分别表示用户 ID 和持有的基金 ID。查询中使用了 group_concat 和 distinct 函数,分别用于将每个用户持有的基金 ID 按照升序排列并去重,最终返回一个逗号分隔的字符串。该语句首先从 property 表中筛选出 pro_type = 3 的记录,即持有基金的记录,并按照用户 ID 和基金 ID 分组。然后,在 SELECT 语句中使用 group_concat 函数将每个用户持有的基金 ID 拼接成一个字符串,并赋值给 f_id 字段。最终,该语句返回一个临时表 pro,供后续查询使用。
group_concat(DISTINCT FLOW_ROLE_ID)
group_concat(DISTINCT FLOW_ROLE_ID) 是一个 SQL 查询中的函数,用于将指定列的值连接成一个字符串,并去重。在使用该函数时,它会将指定列的不同值连接在一起,中间以指定的分隔符分隔开。这个函数的作用是将多个不同的 FLOW_ROLE_ID 值连接成一个字符串,并去除重复的值。