如何在 MySQL (5.5) 中在两个 SQL 查询之间执行 MINUS。我不擅长 SQL。
我想要的是只获取第二个查询中不存在的键。我正在尝试使用 LEFT JOIN来完成此操作。我可以使用这样的东西:
SELECT target.component_id, target.asset_code FROM
(SELECT comp_files.* FROM stageSchema.components comp
INNER JOIN productionSchema.component_files comp_files
ON comp.id = comp_files.component_id) target
LEFT JOIN
(SELECT comp_files.* FROM stageSchema.components comp
INNER JOIN stageSchema.component_files comp_files
ON comp.id = comp_files.component_id) stage
ON target.component_id = stage.component_id
WHERE stage.component_id IS NULL;
我知道上面的查询不正确。任何想法如何做到这一点?
“ component_files ”表的结构是:
CREATE TABLE `component_files` (
`component_id` int(11) NOT NULL,
`asset_code` varchar(3) NOT NULL,
`file_name` varchar(40) NOT NULL,
`file_size` int(11) NOT NULL,
`video_size` varchar(10) DEFAULT NULL,
`bit_rate` varchar(10) NOT NULL,
`last_updated_date` datetime NOT NULL,
UNIQUE KEY `cf_uk` (`component_id`,`asset_code`) USING BTREE,
CONSTRAINT `cf_comp_fk` FOREIGN KEY (`component_id`) REFERENCES `components` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是 EXPLAIN 的结果
没有 WHERE 子句:
使用 WHERE 子句: