sql - sql-选择与其他行中的值进行比较的行

标签 sql sqlite

我的数据库看起来像这样

Value | Date     | parent_id
 y    | 2019-01-01 | 1
 n    | 2019-01-02 | 1
 n    | 2019-01-03 | 1


我想编写一个查询,该查询将查找具有parent_id = 1value = 'y'的行,并针对具有parent_id=1'的其他行对其进行评估,但将检查以确保date大于其行的日期。

因此,在这种情况下,它不会返回任何内容。

如果数据是这样的:

Value | Date     | parent_id
 y    | 2019-01-04 | 1
 n    | 2019-01-02 | 1
 n    | 2019-01-03 | 1


然后它将返回第一行。

如果有什么用,我正在使用SQLite。

最佳答案

您可以使用NOT EXISTS:

select * from tablename t
where 
  parent_id = 1 and value = 'y'
  and not exists (
    select 1 from tablename 
    where parent_id = t.parent_id
    and date > t.date
  )


请参见demo
建议:由于使用的是SQLite,因此应考虑将Date列的格式更改为YYYY-MM-DD,以便具有可比性。

关于sql - sql-选择与其他行中的值进行比较的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857225/

相关文章:

mysql - 使用 GROUP BY 的最后一个值

android - SQLite UPDATE 值与行号可能/选项?

mysql 使用带有动态表名的 SHOW CREATE TABLE

sql - 在 DACPAC 中使用 SQLCMD 变量作为用户名

android - 使用内存中的sqlite android

mysql - SQLite3::SQLException:没有这样的列:parameters.user:

ios - 在 iOS 中访问 Photos.sqlite 以检索照片元数据

mysql - 根据两个表中的两列查找行

mysql - 多列交叉制表又名枢轴

sql - PostgreSQL - 使用索引获取速度非常慢