mysql有表名为element_instance,id为唯一主键,vest_id为父级id。请根据这个表信息写出:通过多个id查询多个id所有父级一直到最顶级
时间: 2024-02-13 18:06:21 浏览: 23
您可以使用递归查询的方式来获取多个id所有父级一直到最顶级。以下是使用MySQL递归查询的示例SQL语句:
```
WITH RECURSIVE cte AS (
SELECT id, vest_id
FROM element_instance
WHERE id IN (1, 2, 3) -- 多个id
UNION ALL
SELECT e.id, e.vest_id
FROM element_instance e
JOIN cte ON e.id = cte.vest_id
)
SELECT * FROM cte;
```
在上述示例SQL语句中,使用了递归公共表表达式(CTE)来查询多个id所有父级一直到最顶级。首先,我们在CTE的初始查询中选择多个id的id和vest_id列。然后,在递归查询中,我们将element_instance表与先前查询的CTE进行JOIN操作,使用element_instance表的id列来连接CTE表的vest_id列。最后,我们从CTE表中选择所有列。通过这种方式,可以获取多个id的所有父级一直到最顶级。
相关问题
mysq5.7有表名为element_instance,有唯一主键id,父级vest_id字段。根据多个id查询所有父级去重,不使用WITH RECURSIVE,请写出详细实现方式
可以使用连接查询和子查询来实现这个需求:
```mysql
SELECT DISTINCT t1.vest_id
FROM element_instance t1
JOIN (
SELECT id
FROM element_instance
WHERE id IN (1, 2, 3, 4) -- 替换成需要查询的多个id
) t2 ON t1.id = t2.id
```
首先在子查询中查询出所有需要查询的id,然后在连接查询中使用这些id和父级vest_id进行关联,最后使用DISTINCT去重得到所有的父级vest_id。
private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new ConcurrentHashMap<>(3); 只能放三个key吗
`ConcurrentHashMap` 的构造方法 `ConcurrentHashMap(int initialCapacity)` 中的 `initialCapacity` 参数表示初始容量,而不是容量上限。因此,`private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new ConcurrentHashMap<>(3);` 中的 `3` 只是表示初始容量为 `3`,并不表示 `ConcurrentHashMap` 的容量上限。如果需要限制 `Map` 的容量上限,可以考虑使用 `LinkedHashMap` 的构造方法 `LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)` 中的 `accessOrder` 参数,将其设置为 `true`,并实现 `removeEldestEntry` 方法,例如:
```java
private static final int MAX_CAPACITY = 3;
private static final Map<String, List<RedisTemplate>> VEST_REDISTEMPLATE_MAP = new LinkedHashMap<String, List<RedisTemplate>>(MAX_CAPACITY, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<String, List<RedisTemplate>> eldest) {
return size() > MAX_CAPACITY;
}
};
```
这样,当 `Map` 中的键值对数量超过 `MAX_CAPACITY` 时,就会将最老的键值对删除。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)