SQL。当我尝试执行类似“INSERT INTO Table VALUES(x1,x2,x3)”的操作时,x1 x2 x3可以是sql查询,例如SELECT< ...>

时间:2013-11-27 08:00:41

标签: sql sqlite qsqlquery qsqltablemodel

我想做这样的事情:

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

但它不起作用。当然对某些人来说显然错误在哪里,也许他告诉我如何做对。

3 个答案:

答案 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)

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

然后,就这样做

INSERT INTO target_table SELECT ...