逆向工程查询

时间:2009-09-08 17:25:55

标签: sql mysql

我有以下查询:

SELECT a.catalogID, d.catalogFileID, e.catalogFileID 
FROM catalog_topics a
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID
LEFT JOIN catalog_files d ON d.catalogFileID = c.catalogFileID
LEFT JOIN catalog_files e ON e.catalogFileID = b.catalogFileID
WHERE b.fileTypeID =  'gvl401'
AND c.fileTypeID =  'gvl25'
AND a.topicID =  'top312'
ORDER BY a.sortOrder;

返回以下结果:

88  cfil923     cfil922
89  cfil925     cfil924
91  cfil929     cfil928
171   cfil107     cfil1074

我想写一个insert语句来插入几条记录,如果我插入2条记录,上面的select查询会返回6条记录。插入时我将访问上面where子句中的所有内容,我将插入新的d.catalogFileID和e.catalogFileID

1 个答案:

答案 0 :(得分:1)

您提供的查询从3个单独的表中提取数据。单个SQL插入查询只会将数据插入到单个表中。因此,为了将每个记录添加到系统,您将必须每个记录至少执行3次插入。即

对于10,cfil123,cfil456的新记录,您需要:

INSERT INTO catalog_topics(catalogID, .. other required fields) VALUE(10, other required fields)
INSERT INTO catalog_files(catalogFileID, .. other required fields) VALUE('cfil123', other  required fields) 
INSERT INTO catalog_files_join(catalogFileID, .. other required fields) VALUE('cfil456', other  required fields)

此外,您应该使用开始/结束事务对来包装插入集,以便每个记录的所有插入都发生,或者都不会发生。