-1

私は2つのテーブルを持っています:

customerschema_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
4

2 に答える 2

5

max(updated_date)for eachが必要な場合は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 FiddlewithDemoを参照してください

次に、サブクエリをテーブルへの結合で使用して、日付とschema_idが一致する行を返します。

于 2013-03-22T19:34:50.767 に答える
0

私があなたの問題を理解したならば、あなたは「スキーマ」の最新の登録をとる必要があります。

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
                       )

よろしく!

エドミルトン

于 2013-03-22T19:44:05.480 に答える