使用sql语句 从一张表中 获取 ancestors字段中出现逗号数最多和第二多的所有数据不能使用SUBSTRING_COUNT()
时间: 2024-03-20 21:39:18 浏览: 17
如果不能使用`SUBSTRING_COUNT()`函数,可以使用`REPLACE()`函数来实现逗号替换的功能。具体的SQL语句如下:
```
SELECT ancestors
FROM table_name
WHERE LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', '')) =
(SELECT MAX(LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', ''))) FROM table_name)
OR LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', '')) =
(SELECT MAX(LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', ''))) FROM table_name WHERE LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', '')) < (SELECT MAX(LENGTH(ancestors) - LENGTH(REPLACE(ancestors, ',', ''))) FROM table_name))
```
解释一下:
1. 使用`REPLACE()`函数将逗号替换为空字符串,并计算替换前后的长度差,即为逗号数;
2. 使用子查询找到最大的逗号数和第二大的逗号数,分别对应主查询中`WHERE`子句中的两个条件;
3. 返回满足条件的`ancestors`字段。
请将`table_name`替换为您所需要的表名。注意,这种方法效率较低,因为需要进行多次子查询。