powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / удалить лишние записи из таблици созданной с помощью with
9 сообщений из 9, страница 1 из 1
удалить лишние записи из таблици созданной с помощью with
    #38934134
hommePibre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят привет.

Есть задача из первоночально полученных данных убрать повторные записи по user_id(у каждой записи есть уникальный id).

Написал вот такой запрос

with the_t as (
select distinct b.user_id,
b.created_date_time::date,
b.id,
b.status,
b.country_id
from b
where b.created_date_time>'2015-04-09' and b.status='completed'
)

delete from the_t
where exists (select ID from
the_t where user_id = the_t.user_id and ID < the_t.ID)

Но такой запрос падает с ошибкой:
ERROR: relation "the_t" does not exist
LINE 17: delete from the_t
^
********** Ошибка **********

ERROR: relation "the_t" does not exist
SQL-состояние: 42P01
Символ: 346


Что я делаю не так? Почему он считает что табличка не создана?

Спасибо.
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934142
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hommePibre,

delete from the_t
Нельзя удалять из результата WITH поздапроса а только из реальных таблиц.
Вы наверное имели в виду
Код: plsql
1.
delete from b 

?

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934281
hommePibre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

теперь понятно почему не работает( спасибо

а есть лекгий и быстрый способ из результата with создать таблицу?

и удалять из b у меня прав не хватит)
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934352
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hommePibreиз результата with создать таблицуselect into/ctas, но обычно проще дописать where, чем что-то создавать ради удаления.
И еще, distinct id также наводит на мысль о полном непонимании предмета. Базы данных не та область, где стоит что-то делать нахрапом, чтобы потом с этим мучиться пользователям. Сначала книжки, потом тестовые задачки, потом осмысленные вопросы на форуме.
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934364
hommePibre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.,

distinct остался от чего то другого у меня, он тут не нужен)

А на счет понимая предмета это вы правы, храмает причем сильно) Но мне обычно сложнее простого select'а с join'ами не нужно писать.

А вот эту задачу приходится решать чем получится.

Создать свою таблицу мне придется из-за того что я не могу вносить изменения в исходную.
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934371
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hommePibreСоздать свою таблицу мне придется из-за того что я не могу вносить изменения в исходную.Наверное не просто так не дают портить исходные данные. Для такого подхода чаще выбирают всякие экселы. Почему-то считается, что они, в отличие от sql, знаний не требуют.
Какие изменения вносить? "Удаления" ради уникализации user_id элементарно наложить на исходные данные через агрегацию или distinct on.
Прочие изменения в отрыве от исходных данных тоже выглядят сомнительно, а в связи - их надо делать соответственно связанной таблицей, чтобы не потом не бороться с очередной мегапроблемой, как скопировать изменения из источника и не похерить свои.
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38934391
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hommePibreMaxim Boguk,

теперь понятно почему не работает( спасибо

а есть лекгий и быстрый способ из результата with создать таблицу?

и удалять из b у меня прав не хватит)

удалить дубликаты таким образом у тебя однозначно не получится.
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38935011
hommePibre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.hommePibreСоздать свою таблицу мне придется из-за того что я не могу вносить изменения в исходную.Наверное не просто так не дают портить исходные данные. Для такого подхода чаще выбирают всякие экселы. Почему-то считается, что они, в отличие от sql, знаний не требуют.
Какие изменения вносить? "Удаления" ради уникализации user_id элементарно наложить на исходные данные через агрегацию или distinct on.
Прочие изменения в отрыве от исходных данных тоже выглядят сомнительно, а в связи - их надо делать соответственно связанной таблицей, чтобы не потом не бороться с очередной мегапроблемой, как скопировать изменения из источника и не похерить свои.

классная идея про "наложить на исходные данные через агрегацию или distinct on"! спасибо!)

но меня инетересуют уникальные и первые записи по определенному user_id

То есть получается нужно делать так:
1)получаем уникальный список user_id
2)join'ом отфильтровываем лишее
Только вот где гарантия что остануться только первые записи?
...
Рейтинг: 0 / 0
удалить лишние записи из таблици созданной с помощью with
    #38935071
thorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hommePibre,

Код: sql
1.
min(ctid)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / удалить лишние записи из таблици созданной с помощью with
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]