我有两张桌子,
accounts
=我的应用中的帐户(id
,name
,created_at
)accounts_history
=帐户更改历史记录(history_id
,account_id
,history_change_date
,field
,status_name
)在accounts_history
表格中,有一列将更改归类为帐户记录(field
),该记录可包含两个值field=Status
(记录值已更改)或{{ 1}}(创建了帐户记录)。每个field=Created
记录都应在accounts
accounts_history
中有记录,但并不总是有field=Created
的记录。
我要查询的是帐户及其field=Status
更改的计数,如果field=Status
记录不存在,则默认存储accounts
记录和field=Created
列COALESCE
(与status_name
相关联),其值为field=Status
。
使用我当前的查询,我会检索一个包含每个关联的New
和Status
记录的帐户表,但不会被Created
条件重复删除。
我应该使用field
还是子查询?
当前查询:
UNION
答案 0 :(得分:0)
field = Created update to Status还是添加了field = Status的新条目?我猜测后者。
SELECT DISTINCT ON (accounts.id), *
FROM accounts
JOIN accounts_history ON accounts_history.accounts_id = accounts.id AND accounts_history.field IN ('Status', 'Created')
WHERE accounts.created_at::date = date '2018-03-14'
ORDER BY accounts.id, accounts_history.id DESC
LIMIT 10;
仅供参考,我没有测试过这个剧本。