Mysql 首次查询状态更改

Mysql 首次查询状态更改,mysql,sql,database,data-modeling,Mysql,Sql,Database,Data Modeling,我有一张像下面这样的桌子 CREATE TABLE Customers_History(Row_Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Cust_Name VARCHAR(255), Created_Date DATE, Cust_Status TINYINT) 表中的行如下所

我有一张像下面这样的桌子

CREATE TABLE Customers_History(Row_Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Cust_Name VARCHAR(255), Created_Date DATE, Cust_Status TINYINT) 表中的行如下所示

INSERT INTO Customers_History(Cust_Name, Created_Date, Cust_Status) VALUES('Customer A', '20120516', 0), ('Customer B', '20120516', 0), ('Customer C', '20120516', 0), ('Customer A', '20120517', 1), ('Customer B', '20120517', 0), ('Customer C', '20120517', 0), ('Customer A', '20120520', 1), ('Customer B', '20120520', 0), ('Customer C', '20120520', 1), ('Customer A', '20120521', 0), ('Customer B', '20120521', 0), ('Customer C', '20120521', 1), ('Customer A', '20120526', 1), ('Customer B', '20120526', 1), ('Customer C', '20120526', 0); 我想要一个以日期为参数的查询,其输出如下所示

当我将20120517作为where类中日期的参数传递时,当状态从0更改为1时,它应将客户A带入

Customer A Customer C Customer B 当我将20120520作为where类中日期的参数传递时,当其状态从0更改为1时,它应将客户C带入

Customer A Customer C Customer B 当我将20120526作为where类中日期的参数传递时,当其状态从0更改为1时,它应将客户B带入

Customer A Customer C Customer B 我需要状态首次从0更改为1的特定日期的客户名称

注意:当我将20120526作为where类中日期的参数传递时,它不应带来客户A,因为客户A的状态在17日自身从0更改为1。

你看:

select
  c.Cust_Name
from
  Customers_History c
where
  c.CreatedDate = :YourDate and
  c.Cust_Status = 1 and
  not exists 
    ( select 
        'x' 
      from 
        Customers_History c2
      where 
        c2.Cust_Name = c.CustName and
        c2.Cust_Status = 1 and
        c2.Created_Date < c.Created_Date )

一个名为“Customers”的表,我希望只包含唯一的客户,而不是每个客户指定的数量。而是创建一个单独的表CustomerStates,该表包含此数据,并链接到具有CustomerID的客户。我正在跟踪此表中的客户历史记录。如果我像您所说的那样创建一个单独的表,如何跟踪该表中的客户状态,则将其命名为CustomerHistory。当前的表显示这是您的客户表,包含实际客户。好的,也修改了我的答案。非常感谢。我希望你不会介意我问你上述要求的合适桌子设计。提前谢谢你还没有理解我的问题