-2

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

テーブル A : (id, type, ...)
ここで id は主キーです

テーブル B : (id、timestamp、old_type、new_type、...)
ここで id は主キーではありません

A.type が最後の (タイムスタンプによる) B.new_type と同じではないような ID を返す SQL リクエストを作成したいと考えています。

4

3 に答える 3

0

試す:

select a.id, a.type
from A a
join (select id, max(`timestamp`) max_timestamp from B group by id) mb
  on a.id = mb.id
join B b on mb.id = b.id and mb.max_timestamp = b.`timestamp`
where a.type <> b.new_type
于 2013-03-18T13:55:40.760 に答える
0

トリガーを使用して、次のようなイベントをログに記録します (テストされていないコード):

CREATE TRIGGER logger BEFORE UPDATE ON A
FOR EACH ROW
BEGIN
  IF NEW.Type <> OLD.Type THEN
    INSER INTO B(id, timestamp, old_type, new_type, ...) 
      VALUES (id, CURRENT_TIMESTAMP, OLD.Type, NEW.Type, ...)
  END IF;        
END;

詳細については、ドキュメントを参照してください。

于 2013-03-18T14:06:04.860 に答える