mysql - 当明细记录存在但缺少主表时插入主表

标签 mysql

我有两张表——一张主表,一张明细表(即一对多表)。我正在从一个可怕的模式中导入数据,数据的一个特征是我经常有一些详细记录但没有主记录。

在这些情况下如何插入主记录?通过这个查询,我可以很容易地找到丢失的主人:

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/

相关文章:

PHP SLIM DELETE 问题始终获得成功消息

mysql - 通过连接四列来更新 mysql 表

mysql - 如何使用 ORDER BY RAND() 优化此 SQL 查询

php - 2 个不同的值存储在数据库的一列下

MySQL 通配符替换

php - mySQL->更新/插入 "compound"记录

php - 添加、删除和更新网页中评论的标签

mysql - 如何在 Drupal 中对带有变音符号的文本进行 MySQL 查询?

php - 如何在 Phpmyadmin 中创建带有主键和外键的关系数据库?

mysql - 从单个表获取 MAX、MIN、SUM、AVERAGE 并创建报告