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 07:22:48 浏览: 129
这是一个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相同),如果存在,则返回这些投资者的组合。
相关问题
group_concat(DISTINCT FLOW_ROLE_ID)
group_concat(DISTINCT FLOW_ROLE_ID) 是一个 SQL 查询中的函数,用于将指定列的值连接成一个字符串,并去重。在使用该函数时,它会将指定列的不同值连接在一起,中间以指定的分隔符分隔开。这个函数的作用是将多个不同的 FLOW_ROLE_ID 值连接成一个字符串,并去除重复的值。
mysql中 GROUP_DISTINCT_CONCAT
很抱歉,MySQL中没有GROUP_DISTINCT_CONCAT函数。但是,MySQL中有GROUP_CONCAT函数,可以用于将分组后的结果连接成一个字符串。GROUP_CONCAT函数的语法如下:
```
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
```
其中,DISTINCT是可选的,用于去重;expr是要连接的列或表达式;ORDER BY子句用于指定连接后的结果的排序方式;SEPARATOR用于指定连接后的结果的分隔符。
以下是一个示例,演示如何使用GROUP_CONCAT函数将goods_cat表中pid为25的记录的cat_id连接成一个字符串:
```
mysql> SELECT GROUP_CONCAT(cat_id) FROM goods_cat WHERE pid = 25;
```
输出结果为一个字符串,其中包含了pid为25的记录的cat_id字段的值,这些值用逗号分隔。
阅读全文