SQL - 条件选择和行重复数据删除

时间:2018-03-27 21:06:54

标签: sql postgresql

我有两张桌子,

  1. accounts =我的应用中的帐户(idnamecreated_at
  2. accounts_history =帐户更改历史记录(history_idaccount_idhistory_change_datefieldstatus_name
  3. accounts_history表格中,有一列将更改归类为帐户记录(field),该记录可包含两个值field=Status(记录值已更改)或{{ 1}}(创建了帐户记录)。每个field=Created记录都应在accounts accounts_history中有记录,但并不总是有field=Created的记录。

    我要查询的是帐户及其field=Status更改的计数,如果field=Status记录不存在,则默认存储accounts记录和field=CreatedCOALESCE(与status_name相关联),其值为field=Status

    使用我当前的查询,我会检索一个包含每个关联的NewStatus记录的帐户表,但不会被Created条件重复删除。

    我应该使用field还是子查询?

    当前查询:

    UNION

1 个答案:

答案 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;

仅供参考,我没有测试过这个剧本。