-1

我想做这样的事情:

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();

但它不起作用。当然对于显然错误在哪里的人来说,也许他会告诉我如何正确地做。

4

3 回答 3

1

INSERT ... SELECT ...当您要插入多条记录,或者要插入的大多数值来自同一记录时使用。

如果要插入一条记录,其值来自多个表,可以像尝试那样使用子查询,但必须使用正确的语法: 标量子查询必须写在括号内,并且必须将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 = ?),
        ?)
于 2013-11-27T08:51:07.450 回答
1

首先,您犯了拼写错误。它的“INSERT”不是“INCERT”,是的,我们可以在 INSERT 查询中插入 SELECT 查询。例如:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
于 2013-11-27T08:06:16.387 回答
0

如果您想要来自两个表的数据,您必须首先编写一个返回假装数据的查询 - 使用JOIN, UNION, 子查询, ...

然后,做

INSERT INTO target_table SELECT ...
于 2013-11-27T08:37:04.833 回答