基本上我在 sql 中嘗試做的是找到一種方法來執行 select insert 陳述句,其中其他列中的所有值將保持不變,但對于創建的每一行,其中一個列的值將增加 1。我想知道是否有辦法在 SQL 中做到這一點。
uj5u.com熱心網友回復:
您可以使用:
INSERT INTO table_name (col1, col2, col3)
SELECT col1, col2, col3 1
FROM table_name
其中,對于樣本資料:
CREATE TABLE table_name (col1, col2, col3) AS
SELECT LEVEL, LEVEL, LEVEL FROM DUAL CONNECT BY LEVEL <= 3;
然后,在 之后INSERT,該表包含:
COL1 COL2 COL3 1 1 1 2 2 2 3 3 3 1 1 2 2 2 3 3 3 4
并且插入的行的col1和值相同,并且值都增加了 1。col2col3
如果您想通過插入的行數來增加值,那么您可以使用:
INSERT INTO table_name (col1, col2, col3)
SELECT col1, col2, col3 COUNT(*) OVER ()
FROM table_name
然而
如果您嘗試添加多行并保留col3唯一值,則不應使用該方法而應使用序列。
如果你有桌子:
CREATE TABLE table_name (col1, col2, col3) AS
SELECT LEVEL, LEVEL, table_name__col3__seq.NEXTVAL FROM DUAL CONNECT BY LEVEL <= 3;
然后您可以使用以下方法插入行:
INSERT INTO table_name (col1, col2, col3)
SELECT col1, col2, table_name__col3__seq.NEXTVAL
FROM table_name
并將col3使用下一個序列值填充。
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478846.html
