Mysql 使用左连接的SQL请求

Mysql 使用左连接的SQL请求,mysql,sql,Mysql,Sql,我有两张桌子 表A:id、类型。。。 这里id是一个主键 表B:id、时间戳、旧类型、新类型。。。 此处id不是主键 我想发出一个sql请求,返回这样的ID,每个ID的A.type与上一个by timestamp B.new_type不同。这对您有帮助吗 select a.* from A a where a.type!= ( select b.new_type from B b order by `timestamp` desc limit 1 ) 尝试: 使用触发器记录事件,如以

我有两张桌子

表A:id、类型。。。 这里id是一个主键

表B:id、时间戳、旧类型、新类型。。。 此处id不是主键


我想发出一个sql请求,返回这样的ID,每个ID的A.type与上一个by timestamp B.new_type不同。

这对您有帮助吗

select a.* from A a where a.type!= (
     select b.new_type from B b order by `timestamp` desc limit 1
)
尝试:


使用触发器记录事件,如以下未经测试的代码:

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;

请看下面的内容,以便进一步阅读。

为您的问题提供一些上下文是很有帮助的。调用事物A和B会使我们更难理解您的问题。请显示示例数据和输出。或者创建sql Fiddle您的问题缺少信息。我们如何对表B进行分组?B是对a的更改日志吗?您使用的是哪种RDBMS SQLServer、MySQL、Oracle等?答案可能与查询的编写方式直接相关。谢谢,我刚刚在括号中添加了A.id=B.id。但是现在它工作得很慢:不客气。。我会更新我的答案来解决你的问题,但我现在必须离开,明天我会给你适当的询问。。但我想在那之前你会自己得到答案的,祝你好运。
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;