我有以下查询:
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
答案 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)
此外,您应该使用开始/结束事务对来包装插入集,以便每个记录的所有插入都发生,或者都不会发生。