首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并这两个MySQL查询

如何合并这两个MySQL查询
EN

Stack Overflow用户
提问于 2015-04-01 19:08:08
回答 2查看 48关注 0票数 0

我有两个问题,这几乎完全相同。

查询1:

代码语言:javascript
复制
SELECT 
    cman_code, cman_name 
FROM
    capder 
JOIN 
    caprange ON capder.cder_rancode = caprange.cran_code 
JOIN 
    capman ON caprange.cran_mantextcode = capman.cman_code 
JOIN 
    capmod ON capder.cder_modcode = capmod.cmod_code 
JOIN 
    nvdtechnical ON nvdtechnical.TECH_Id = capder.cder_ID 
JOIN 
    nvddictionarytechnical ON nvddictionarytechnical.DT_TechCode = nvdtechnical.TECH_TechCode 
JOIN 
    nvddictionarycategory ON nvddictionarycategory.DC_CatCode = nvddictionarytechnical.DT_CatCode 
JOIN 
    nvdmodelyear ON capder.cder_ID = MY_Id
                    AND nvddictionarytechnical.DT_TechCode = 67 
                    AND nvdtechnical.TECH_Value_Float < '100' 
                    AND nvdtechnical.TECH_Value_Float != 0      
                    AND cder_transmission = 'M' 
                    AND cman_code IN ('1','140','164','836','869','1283','1333','1925','2193','2514','4256','4537','4721','4835','5088','5171','5182','5238','5261','5509','6058','6425','7104','7983','8083','8219','9909','10172','10251','10383','10519','10968','12243','12764','14786','15155','21223','22439','44394','47841') 
                    AND (cmod_discontinued=0 OR cmod_discontinued=2015) 
                    AND cder_discontinued = '0000-00-00 00:00:00' 
GROUP BY 
    cman_code 
ORDER BY 
    cman_name DESC

查询2:

代码语言:javascript
复制
SELECT 
    cman_code, cman_name 
FROM 
    capder 
JOIN 
    caprange ON capder.cder_rancode = caprange.cran_code 
JOIN 
    capman ON caprange.cran_mantextcode = capman.cman_code 
JOIN 
    capmod ON capder.cder_modcode = capmod.cmod_code 
JOIN 
    nvdtechnical ON nvdtechnical.TECH_Id = capder.cder_ID 
JOIN 
    nvddictionarytechnical ON nvddictionarytechnical.DT_TechCode = nvdtechnical.TECH_TechCode 
JOIN 
    nvddictionarycategory ON nvddictionarycategory.DC_CatCode = nvddictionarytechnical.DT_CatCode 
JOIN 
    nvdmodelyear ON capder.cder_ID = MY_Id
WHERE 
    nvddictionarytechnical.DT_TechCode = 11 
    AND nvdtechnical.TECH_Value_Float < 25  
    AND nvdtechnical.TECH_Value_Float != 0
    AND cder_transmission = 'M' 
    AND cman_code IN ('1','140','164','836','869','1283','1333','1925','2193','2514','4256','4537','4721','4835','5088','5171','5182','5238','5261','5509','6058','6425','7104','7983','8083','8219','9909','10172','10251','10383','10519','10968','12243','12764','14786','15155','21223','22439','44394','47841') 
    AND (cmod_discontinued=0 OR cmod_discontinued=2015) 
    AND cder_discontinued = '0000-00-00 00:00:00' 
GROUP BY 
    cman_code 
ORDER BY 
    cman_name DESC

这两个查询都很完美,并产生了我想要的确切结果。

两者之间唯一的区别是nvddictionarytechnical.**DT_TechCode**nvdtechnical.**TECH_Value_Float**中的值。

我很难把他们聚在一起。

- TECH_Value_Float -列包含CO2MPG值.

我只需要把这些合并成一个查询。

使用此方法不起作用:

代码语言:javascript
复制
where 
(
   (
     nvddictionarytechnical.DT_TechCode = 67 
     AND nvdtechnical.TECH_Value_Float < '100'
   ) 
   or 
   (
     nvddictionarytechnical.DT_TechCode = 11 
     AND nvdtechnical.TECH_Value_Float < 25
   )
 ) 

所产生的结果,如:

代码语言:javascript
复制
|CO2 | MPG|
-----------
 94  | 78 |
 378 | 19 |

我需要MPG和CO2都是真的。其结果如下:

代码语言:javascript
复制
|CO2 | MPG|
-----------
 15  | 18 |
 10  | 17 |

专业人士有什么建议吗?我应该问两个问题吗?有没有人遇到过这样的问题?这很不寻常吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-04-01 19:13:56

你试过:

代码语言:javascript
复制
where 
(
   (
     nvddictionarytechnical.DT_TechCode = 67 
     AND nvdtechnical.TECH_Value_Float < '100'
   ) 
   or 
   (
     nvddictionarytechnical.DT_TechCode = 11 
     AND nvdtechnical.TECH_Value_Float < 25
   )
 ) 
票数 3
EN

Stack Overflow用户

发布于 2015-04-01 19:15:40

那这个呢?

代码语言:javascript
复制
SELECT cman_code, cman_name 

from capder 

JOIN caprange ON capder.cder_rancode = caprange.cran_code 
JOIN capman ON caprange.cran_mantextcode = capman.cman_code 
JOIN capmod ON capder.cder_modcode = capmod.cmod_code 
JOIN nvdtechnical ON nvdtechnical.TECH_Id = capder.cder_ID 
JOIN nvddictionarytechnical ON nvddictionarytechnical.DT_TechCode = nvdtechnical.TECH_TechCode 
JOIN nvddictionarycategory ON nvddictionarycategory.DC_CatCode = nvddictionarytechnical.DT_CatCode 
JOIN nvdmodelyear ON capder.cder_ID = MY_Id

AND ((nvddictionarytechnical.DT_TechCode = 67 
       AND nvdtechnical.TECH_Value_Float < '100') 
   OR (nvddictionarytechnical.DT_TechCode = 11 
       AND nvdtechnical.TECH_Value_Float < 25 ))

AND nvdtechnical.TECH_Value_Float != 0      

AND cder_transmission = 'M' 
AND cman_code IN ('1','140','164','836','869','1283','1333','1925','2193','2514','4256','4537','4721','4835','5088','5171','5182','5238','5261','5509','6058','6425','7104','7983','8083','8219','9909','10172','10251','10383','10519','10968','12243','12764','14786','15155','21223','22439','44394','47841') 

AND (cmod_discontinued=0 OR cmod_discontinued=2015) 
AND cder_discontinued = '0000-00-00 00:00:00' 
GROUP BY cman_code ORDER BY cman_name DESC

这样你就可以检查这两种情况了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29398837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档