我有2张桌子。
表A:(id,type,...)
这里id是主键
表B:(id,timestamp,old_type,new_type,...)
这里id不是主键
我想创建一个sql请求,返回这些ID,每个都与A.type不同,最后一个(通过时间戳)B.new_type。
答案 0 :(得分:1)
这对尼基塔有帮助吗?
select a.* from A a where a.type!= (
select b.new_type from B b order by `timestamp` desc limit 1
)
答案 1 :(得分: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
答案 2 :(得分: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;
请查看documentation以便进一步阅读。