我有三个表,第一个存储大洲,第二个存储具有默认状态的动物,第三个存储特定大陆和动物的第二个表中的例外。大洲(限制为3个以简化结果)| continent_code ||----------------|| EU || OC || AN |animals_default_presence| animal_id | animal | presence ||-----------|------------|----------|| 1 | dog | 1 || 2 | kangaroo | 0 || 3 | polar bear | 0 |continent_animals_presence_exceptions| continent_code | animal_id | presence ||----------------|-----------|----------|| OC | 2 | 1 || AN | 1 | 0 || AN | 3 | 1 |结果是居住在该地区的所有大洲和动物的摘要:| continent_code | animal_id ||----------------|-----------|| EU | 1 || OC | 1 || OC | 2 || AN | 3 |我可以通过一个MySQL查询获得这样的结果吗? 最佳答案 您可以使用union all。我认为以下是您所需要的:select c.continent_code, adp.animal_idfrom continent c cross join animals_default_presence adpwhere adp.presence = 1 and (c.continent_code, adp.animal_id) not in (select cape.continent_code, cape.animal_id from continent_animals_presence_exceptions cape where cape.presence = 0 )union allselect cape.continent_code, cape.animal_idfrom continent_animals_presence_exceptions capewhere cape.presence = 1;Here是db 小提琴。关于mysql - 有没有一种方法可以合并两个表,并使用单个MySQL查询覆盖并乘以结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57711129/ 10-11 05:16