mysql - 从Sql中获取对比数据

标签 mysql sql

我有下面提到的数据库:

ID  TFD1    Date         CCA
D-1 123     25-01-2017   AA
D-2 123     24-01-2017   BA
D-3 123     27-01-2017   BB
D-4 456     15-01-2017   AA
D-5 456     13-01-2017   BS
D-6 789     11-01-2017   AA

我想获取至少有一个值的 IDTFD1DateCCA对应于TFD1的是AA,并且对应于TFD1的所有其他旧值不是AA

我想创建按最旧到最新排序的输出。

所需输出:

ID  TFD1    Date         CCA
D-6 789     11-01-2017   AA
D-1 123     24-01-2017   BA
D-2 123     25-01-2017   AA
D-4 456     13-01-2017   BS
D-5 456     15-01-2017   AA

最佳答案

要获得重要的“A”,您可以使用:

select t.*
from t
where (t.cca = 'A' and
       not exists (select 1 from t t2 where t2.tfd1 = t.tfd1 and t.cca = 'A')
      ) ;

从此您可以获得每个 tfd1 在此日期之前的所有内容:

select t.*
from t join
     (select t.*
      from t
      where (t.cca = 'A' and
             not exists (select 1
                         from t t2
                         where t2.tfd1 = t.tfd1 and t.cca = 'A' and t2.date < t1.date
                        )
            )
     ) tt
     on t.tfd1 = tt.tfd1 and t.date <= tt.date;

关于mysql - 从Sql中获取对比数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49322067/

相关文章:

java - 在 JDBC 中使用特殊 SQL 关键字更新命令

mysql - SQL:字段值出现在 SELECT * 中但无法使用 WHERE 子句查询

php - 选择选项后不显示数据

MySQL 错误 : Table 'table' doesn't exist in engine

php - 将四张表合并为一张新表

php - MySQLI 内部连接 ​​2 个表

mysql - 数据库设计——存储模板和实例的最佳方式

sql - Rails 中相乘的列的总和

c# - SQL语句耗时长线程冲突如何解决?

sql - Postgresql - 如何从每个月的最后一条记录中获取值