2

主キーを共有する2つのテーブルがあります。設計が不十分で、a1のすべてのレコードにa4の対応するレコードがあることを確認する必要があることがわかりました。

クエリ:

SELECT a1.id1, a4.id4
FROM  `a1` 
LEFT JOIN  `a4` ON a1.id1 = a4.id4

結果:

a1.id1.............a4.id4  
00000001    ......NULL  
00000002    ......NULL  
00001001    ......00001001  
00001002    ......00001002  

a1に対応するキーを使用してa4に行を挿入する最良の方法は何ですか?上記の例では、レコード00000001と00000002をa4に挿入する必要があります。00001001と00001002は、a1とa4の両方にすでに存在するため、そのままにしておく必要があります。

データベーススキーマ:

CREATE TABLE `a1` (
  `id1` int(8) unsigned zerofill NOT NULL auto_increment,
  `Shrt_Desc` varchar(200) default NULL,
  `ptype` int(5) NOT NULL,
  `userid` tinyint(5) NOT NULL,
  `submit_id` int(11) NOT NULL,
  `submit_time` int(11) NOT NULL,
  `update_id` int(11) NOT NULL,
  `update_time` int(11) NOT NULL,
  `pub` tinyint(1) default '1',
  `plate` tinyint(1) NOT NULL,
  `item` varchar(11) default NULL,
  PRIMARY KEY  (`id1`),
  KEY `fb_groupbyorder_Shrt_Desc_INDEX` (`Shrt_Desc`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=124106 ;

CREATE TABLE `a4` (
  `id4` int(8) unsigned zerofill NOT NULL,
  `Water` decimal(10,2) default NULL,
  PRIMARY KEY  (`id4`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
4

1 に答える 1

5
INSERT INTO a4 (id4)
SELECT a1.id1
FROM  `a1` 
LEFT JOIN  `a4` ON a1.id1 = a4.id4
WHERE a4.id4 IS NULL

http://sqlfiddle.com/#!2/91dc1/8

于 2012-06-05T05:48:14.740 に答える