
怎么可以实现将 id=1 的 指标 赋值个 id =2 和 3

怎么可以实现将 id=1 的 指标 赋值个 id =2 和 3
您的问题可能存在误解,实际上据我所知,OceanBase 社区版主要支持 MySQL 模式的递归查询语法,而不是 Oracle 模式的递归查询(如 CONNECT BY 或 START WITH)。在 MySQL 模式下,可以使用 WITH RECURSIVE 语句来实现递归查询。
根据您提供的需求,“将 id=1 的指标赋值给 id=2 和 id=3”,可以通过以下步骤实现:
假设您的表结构如下:
CREATE TABLE metrics (
id INT PRIMARY KEY,
name VARCHAR(100),
parent_id INT
);
插入数据:
INSERT INTO metrics (id, name, parent_id) VALUES
(1, 'aaa', NULL),
(2, 'm', 1),
(3, '2334', 2);
您可以使用递归查询获取层级关系:
WITH RECURSIVE cte AS (
SELECT id, name, parent_id, 0 AS level
FROM metrics
WHERE id = 1 -- 从 id=1 开始
UNION ALL
SELECT m.id, m.name, m.parent_id, c.level + 1
FROM metrics m
INNER JOIN cte c ON m.parent_id = c.id
)
SELECT * FROM cte;
id=2 和 id=3 的值如果需要将 id=1 的某个字段值(例如 name)赋值给 id=2 和 id=3,可以执行以下更新语句:
UPDATE metrics
SET name = (SELECT name FROM metrics WHERE id = 1)
WHERE id IN (2, 3);
更多信息请查看: