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

但它不工作,当然,对于某人明显在哪里是错误的,也许他告诉我怎么做的权利

+2

SQL是不是我的,但最强的准备,应该在“INCERT”被“插入”后? – Bjorn

+1

您是否尝试过使用“插入”而不是“incert” –

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

INSERT INTO table2 
(column_name(s)) 
SELECT column_name(s) 
FROM table1; 

如果你想从两个表中的数据,必须先写一个返回假装数据查询 - 使用JOINUNION,子查询,...

然后,只是做

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 = ?), 
     ?)