Похоже, что когда происходит обман, вы берете самую раннюю дату. Если это так, это работает?
select
a.id, username, email, min (ah.modified) as login_date
from accounts a join
account_history ah
on modified_acc_id = a.id
where ah.data::jsonb->>'message' = 'Logon'
group by a.id, username, email, ah.modified::date
В моем случае я составил новую таблицу с той же структурой, создал отношения с другими таблицами, затем извлек данные в CSV от старой таблицы, которая имеет проблему, затем импортировал CSV к новой таблице и отключил проверку внешнего ключа и отключил прерывание импорта, все мои данные вставляются в новую таблицу, которая не имеет никакой проблемы успешно, затем удалил старую таблицу.
Это работало на меня.
Вполне вероятно, что ваша таблица sourcecodes_tags
содержит значения sourcecode_id
, которых больше нет в вашей таблице исходных кодов
. Сначала вам нужно избавиться от них.
Вот запрос, который может найти эти идентификаторы:
SELECT DISTINCT sourcecode_id FROM
sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id
WHERE sc.id IS NULL;