我有一个名为admin_descriptions
的表,它包含以下列:
description_id
、value
、admin_id
、valid_at
以及表admins
,该表包含以下列:
state
我想要一个查询,它给我一个description_id
,它给我的活跃管理员的计数,正在使用该描述。管理员的描述被认为是used,只要admin_descriptions
表中有一行包含description_id
和NOT NULL value
,并且valid_at
比具有该description_id
的NULL value
的任何其他条目都是最新的。
因此,示例数据:
Row 1:
description_id: 1
value: 'foo'
admin_id: 2
valid_at: '2010-01-10'
Row 2:
description_id: 1
value: NULL
admin_id: 2
valid_at: '2012-01-10'
Row 2:
description_id: 1
value: 'some value'
admin_id: 4
valid_at: '2014-01-10'
查询description_id = 1
时的计数将为1。它将只考虑第3行。因为即使有第一行的值不为NULL,对于相同的admin_id,还有第2行的valid_at较新,并且其value
为NULL。
我已经能够在不考虑valid_at
的情况下通过以下方式获得计数:
SELECT COUNT(DISTINCT(ad.id)) AS COUNT
FROM admin_descriptions ad
JOIN admins ON admins.id = ad.admin_id
WHERE ad.description_id = 1
AND admins.state = 'active'
如何修改此查询以考虑每个admin_id/ valid_at
_id组合的描述?
https://stackoverflow.com/questions/50806389
复制相似问题