我的数据库看起来像这样
Value | Date | parent_id
y | 2019-01-01 | 1
n | 2019-01-02 | 1
n | 2019-01-03 | 1
我想编写一个查询,该查询将查找具有
parent_id = 1
和value = '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/