我有两张表——一张主表,一张明细表(即一对多表)。我正在从一个可怕的模式中导入数据,数据的一个特征是我经常有一些详细记录但没有主记录。
在这些情况下如何插入主记录?通过这个查询,我可以很容易地找到丢失的主人:
select * from p_ltx_surgical_comp as c -- detail
left join p_ltx_surgical as s -- master
on c.fk_oid = s.fk_oid -- this is the key
where s.oid is null -- primary key, so null means no record exists
group by c.fk_oid; -- only show one value even if there are multiple detail records
哦,还有一个额外的问题,即使有多个详细记录,我也只想插入一个母版。
最佳答案
您可以从这个 INSERT 查询开始:
INSERT INTO p_ltx_surgical (fk_oid)
SELECT DISTINCT c.fk_oid
FROM
p_ltx_surgical_comp AS c
LEFT JOIN p_ltx_surgical AS s
ON c.fk_oid = s.fk_oid
WHERE
s.oid IS NULL
并且您可以向表中添加更多详细信息,例如:
INSERT INTO p_ltx_surgical (fk_oid, description, ...)
SELECT DISTINCT c.fk_oid, 'missing record', ...
FROM
...
关于mysql - 当明细记录存在但缺少主表时插入主表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957444/