我需要将记录从同一表上的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语句来做到这一点?
答案 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
和子查询不是必需的。