SQL。当我试图做一些事情,如“INSERT INTO表中的值(X1,X2,X3) - 可以在X1 X2 X3是SQL查询,如SELECT <...>
问题描述:
我想要做这样的事情:SQL。当我试图做一些事情,如“INSERT INTO表中的值(X1,X2,X3) - 可以在X1 X2 X3是SQL查询,如SELECT <...>
QSqlQuery q;
q.prepare("insert into Norm values(select from Disc id_disc WHERE name_disc=?, select from Spec code_spec WHERE name_spec=?,?");
q.addBindValue(MainModel->data(MainModel->index(MainModel->rowCount()-1, 1)).toString());
q.addBindValue(ui->comboBox->currentText());
q.addBindValue(MainModel->data(MainModel->index(MainModel->rowCount()-1, 2)).toString());
q.exec();
但它不工作,当然,对于某人明显在哪里是错误的,也许他告诉我怎么做的权利
答
首先你的拼写错误,它的“INSERT”不是“INCERT” 是的,我们可以在INSERT查询中插入SELECT查询 例如:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
答
如果你想从两个表中的数据,必须先写一个返回假装数据查询 - 使用JOIN
,UNION
,子查询,...
然后,只是做
INSERT INTO target_table SELECT ...
答
INSERT ... SELECT ...
是当您想要插入多个记录时,或者大多数要插入的值来自同一条记录时使用。
如果要插入一个纪录值从多个表来,则可以使用子查询像你试图这样做,但你必须使用正确的语法: scalar subqueries必须在括号内写的,你必须编写SELECT正确为SELECT value FROM table
:
INSERT INTO Norm
VALUES ((SELECT id_disc FROM Disc WHERE name_disc = ?),
(SELECT code_spec FROM Spec WHERE name_spec = ?),
?)
SQL是不是我的,但最强的准备,应该在“INCERT”被“插入”后? – Bjorn
您是否尝试过使用“插入”而不是“incert” –