内部查询很难写

时间:2013-03-22 19:30:28

标签: mysql sql

我有两张桌子:

带有customer

schema_id

架构表有:schema_id, period, amt, updated_date

我需要加入客户和架构,但只检索加入的最新记录而不是其他记录。

customer table

cust_id  name schema_id
1        ABC  1

架构表

schema_id  period amt updated_date
1          1      100  2010-4-1
1          2      150  2011-4-1

2 个答案:

答案 0 :(得分:5)

如果每个max(updated_date)都需要schema_id,那么您可以使用子查询:

select c.cust_id, c.name, c.schema_id, s.period, s.amt, s.updated_date
from customer c
inner join
(
  select s1.schema_id, s1.period, s1.amt, s1.updated_date
  from `schemas` s1
  inner join 
  (
    select schema_id, max(updated_date) MaxDate
    from `schemas`
    group by schema_id
  ) s2
    on s1.schema_id = s2.schema_id
    and s1.updated_date = s2.maxdate
) s
  on c.schema_id = s.schema_id

请参阅SQL Fiddle with Demo

然后将子查询用于返回表的连接,以返回具有匹配日期和schema_id的行。

答案 1 :(得分:0)

如果我理解你的问题,你需要对" schema"进行最新的注册。

我认为你需要使用max()函数。因此,请尝试以下查询:

select *
from customer c,
     schema s
where c.schema_id = s.schema_id
  and s.updated_date = ( select max(s2.updated_date)     
                         from schema s2
                         where s2.schema_id = s.schema_id
                       )

问候!

Edmilton