2015-02-23 65 views
-1

我试图找到航模737 的分年我得到当年列SQL JOIN

SELECT m.name 
    , m.n_number 
    , m.mfr_mdl_code 
    , MIN(m.year_mfr) min_year 
    , a.model 
    , a.code 
    FROM master m 
    JOIN acftref a 
    ON m.mfr_mdl_code = a.code 
WHERE a.model = 737 
ORDER 
    BY m.year_mfr IS NOT NULL 
LIMIT 10; 
+1

你有没有试过把你的“不为空”条件放在哪里?因为我认为它不会成为ORDER子句的一部分。 – durbnpoisn 2015-02-23 17:04:16

+0

'where acftref.model = 737 && acftref.year_mfr is not null order by master.year_mfr limit 10' – Cyclonecode 2015-02-23 17:04:28

+0

这似乎是GROUPWISE MAX问题的一个版本,它是MySQL标签下最常遇到的单个问题。但是如果在回顾了类似的问题之后,你仍然在努力,请考虑遵循以下简单的两步式操作:1.如果您还没有这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更容易地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry 2015-02-23 17:17:04

回答

0

空值你缺少你的日期字段限制不包括空值。请尝试以下操作:

select master.name 
,master.n_number 
,master.mfr_mdl_code 
,min(master.year_mfr) as min_year 
,acftref.model 
,acftref.code 
from master 
join acftref on master.mfr_mdl_code=acftref.code 
where acftref.model=737 
and master.year_mfr is not null 
order by master.year_mfr 
limit 10; 
+0

我认为除此之外还有更多! – Strawberry 2015-02-23 17:12:34

+0

我试着添加master.year_mfr不为null的地方。 – 2015-02-23 17:27:30

+0

我也尝试拿出MIN,只是通过master.year_mfr desc – 2015-02-23 17:29:46