我有2個表。使用左連接的SQL請求
表A:(ID,類型,...)
這裏ID是主鍵
表B:(ID,時間戳,OLD_TYPE,NEW_TYPE,...)
這裏id不是主鍵
我想做一個sql請求,它返回的這個id與A.type不一樣,最後一個(按時間戳)B.new_type。
我有2個表。使用左連接的SQL請求
表A:(ID,類型,...)
這裏ID是主鍵
表B:(ID,時間戳,OLD_TYPE,NEW_TYPE,...)
這裏id不是主鍵
我想做一個sql請求,它返回的這個id與A.type不一樣,最後一個(按時間戳)B.new_type。
這對你有幫助Nikita?
select a.* from A a where a.type!= (
select b.new_type from B b order by `timestamp` desc limit 1
)
嘗試:
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
使用觸發器來記錄事件,有些事情是這樣的(未測試的代碼):
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;
看看在documentation進一步閱讀。
它有助於給你的問題一些背景。調用事物'A'和'B'使我們更難理解你的問題。 – 2013-03-18 13:40:51
請顯示樣本數據和輸出。否則創建sql小提琴 – DevelopmentIsMyPassion 2013-03-18 13:41:05
你的問題缺乏信息。我們如何分組表B? – 2013-03-18 13:42:41