我目前正在尝试建立存储库表(或找到替代解决方案),以使我能够轻松识别某些元素之间的“家族”关系。
它基本上是一个树结构,在oracle sql数据库中具有几个相互链接的元素。
每个元素至少有一个父级,并且所有父级均由代码标识。一个元素的父代码很容易在表中访问。
我一直在尝试使用以下代码将“代码”列复制到一个空的存储库表中:
UPDATE TARGET_TABLE
SET TARGET_TABLE.CODE1 =
(SELECT CODE1 FROM SOURCE_TABLE)
INSERT INTO TARGET_TABLE (CODE1)
SELECT CODE1 FROM SOURCE_TABLE;
我执行这些请求时没有任何错误,但是目标表中什么都没有发生。.“更新了0行”
我一直试图在不创建新表的情况下执行此操作,并且能够使用以下命令找到代码:
SELECT DAD_CODE1 FROM SOURCE_TABLE where 'CODE=1000' IN CODE; -- give 0900 as result, being the dad of 1000
SELECT DAD_CODE1 FROM SOURCE_TABLE where 'CODE=0900' IN CODE; -- give null if root
等。直到到达根目录时为NULL。
或相反:
SELECT CODE FROM SOURCE_TABLE WHERE '00001' IN DAD_CODE1 -- give 0100, among other children codes of this dad element
SELECT CODE FROM SOURCE_TABLE WHERE '00100' IN DAD_CODE1 -- give null if no children
,这是可行的,但是我无法“递归”构建它。 目的是容易找到其他数据处理的关系。
答案 0 :(得分:2)
UPDATE
语句将仅更新已经存在的行,因此,如果TARGET_TABLE为空,则您将得到“ 0行已更新”,因为没有要更新的内容。
INSERT
语句将在TARGET_TABLE中插入与SOURCE_TABLE中的行一样多的行。
You can see this for yourself by looking at this dbfiddle
好运。