#sql #postgresql #relational-database
#sql #postgresql #реляционная база данных
Вопрос:
Я хотел бы знать, дают ли эти два запроса одинаковый результат:
update A.cred
set user_name = concat(CURRENT_TIMESTAMP::text)
from A.temp_table2 tt
WHERE email NOT IN (select email from A.temp_table2 it
join A.cred c on c.user_name = it.email
join A.at a on a.ld = c.ld
join A.ap ar on ar.cd = a.ad)
AND tt.email = A.cred.user_name
update A.cred c
join A.temp_table t on t.email = c.user_name
set user_name = concat(CURRENT_TIMESTAMP::text)
WHERE c.user_name NOT IN (select t.email from A.temp_table2 t
join A.cred c on c.user_name = t.email
join A.at a on a.ld = c.ld
join A.ap ar on ar.cd = a.ad)
Кроме того, если кто-нибудь может объяснить мне, почему один лучше другого, пожалуйста, перечислите для меня.
Комментарии:
1. Второй не будет компилироваться.
2. Следовательно, первое лучше.
3. Помимо того факта, что второй недействителен и не будет выполняться:
concat(CURRENT_TIMESTAMP::text)
не имеет никакого смысла.user_name = CURRENT_TIMESTAMP::text
достаточно. Но я не понимаю, почему столбецuser_name
должен хранить текущую дату и время в виде строкового значения. Если это действительно «имя пользователя», то это не имеет смысла. Если это действительно какое-то значение даты и времени, то оно должно хранитьсяtimestamp
не какtext
4. @GordonLinoff но второй быстрее!