我想做这样的事情:
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();
但它不起作用。当然对某些人来说显然错误在哪里,也许他告诉我如何做对。
答案 0 :(得分:1)
首先,你的拼写错误。它的“INSERT”不是“INCERT” 是的,我们可以在INSERT查询中插入SELECT查询。 例如:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
答案 1 :(得分:1)
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 = ?),
?)
答案 2 :(得分:0)
如果您需要来自两个表的数据,则必须首先编写一个返回假装数据的查询 - 使用JOIN
,UNION
,子查询,...
然后,就这样做
INSERT INTO target_table SELECT ...