ORACLE-如何将另一个select语句的结果插入表中,但要进行修改

时间:2019-04-04 20:56:16

标签: sql oracle

我需要将记录从同一表上的select语句的输出插入到表中,但要进行一些修改,以便不违反约束。这就是我尝试过的

Traceback (most recent call last):
  File "cost_optimization.py", line 701, in <module>
    read_transpose('111')
  File "cost_optimization.py", line 612, in read_transpose
    ws.append(r)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/worksheet/worksheet.py", line 654, in append
    cell = Cell(self, row=row_idx, column=col_idx, value=content)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/cell/cell.py", line 120, in __init__
    self.value = value
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/cell/cell.py", line 252, in value
    self._bind_value(value)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/cell/cell.py", line 218, in _bind_value
    raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert 0 to Excel

但是我得到这个错误

--MyTable as three columns C1,C2,C3

Insert into MyTable
(C1, C2, C3)
values
(
  Select 'New Value', C2, C3
  from
 (
   Select C1,C2,C3 from MyTable
 )
)

两个内部的select语句可以正常工作,但不能正常工作。

是否可以仅使用一条sql语句来做到这一点?

2 个答案:

答案 0 :(得分:3)

删除values关键字,然后使用

Insert into MyTable
Select 'New Value', C2, C3
  From MyTable

由于选择列表中的列数等于表的列数,因此无需在insert into Mytable部分中的表名之后列出列名

答案 1 :(得分:1)

只需:

Insert into MyTable (C1, C2, C3)
  Select 'New Value', C2, C3
  from MyTable;

values和子查询不是必需的。