我遇到了一个场景,我需要使用从另一个查询中获取的数据“升级”表。我添加缺少的值,所以我需要插入,但我似乎无法正确。mysql将多行查询结果插入表
目标表如下
CREATE TABLE `documentcounters` (
`UID` int,
`DataChar`,
`SeqNum` ,
`LastSignature`,
`DocumentType`,
`SalesTerminal`,
`Active`,
PRIMARY KEY (`UID`)
) ENGINE=InnoDB
,我试图做类似的东西
INSERT INTO documentcounters
SELECT Q1.in_headers, -1,NULL, 17,0,0 FROM
(SELECT DISTINCT(DocumentSeries) as in_headers FROM transactionsheaders)AS Q1
LEFT JOIN
(SELECT DISTINCT(DataChar) as in_counters FROM documentcounters)AS Q2
ON Q1.in_headers=Q2.in_counters WHERE Q2.in_counters IS NULL;
我离开UID,因为我要插入语句来创建它,但我得到一个“列数不匹配”这是有道理的(darn!)
做类似
INSERT INTO `documentcounters`
(`DataChar`,`SeqNum`,`LastSignature`,`DocumentType`,`SalesTerminal`,`Active`)
VALUES
(
(SELECT Q1.in_headers FROM
(SELECT DISTINCT(DocumentSeries) as in_headers FROM transactionsheaders)AS Q1
LEFT JOIN
(SELECT DISTINCT(DataChar) as in_counters FROM documentcounters)AS Q2
ON Q1.in_headers=Q2.in_counters WHERE Q2.in_counters IS NULL),-1,NULL,17,0,0
);
会产生“子查询返回多于1行”的错误。
任何想法,我可以使这项工作?
干杯
如果你运行子查询单独做他们只返回1记录? – Robert 2012-01-17 16:03:09
@Robert。不,我可以有多个记录 – 2012-01-17 16:04:39