gpt4 book ai didi

SQL - 如何在幂等插入示例中使用连接而不是 EXISTS 和 NOT EXISTS

转载 作者:行者123 更新时间:2023-11-29 12:46:42 31 4
gpt4 key购买 nike

我遇到了这个用于执行幂等插入的 github SQL 代码示例。完全按照我想要的方式工作。我不想使用 EXISTS,因为我觉得它有点困惑。可以使用联接对相同的操作进行编码吗?

下面是我在 github 上找到的相同代码:https://github.com/imtiazahmad007/SQL-Tips-Techniques/blob/master/Idempotent_Postgres_Inserts.sql

INSERT INTO users_articles (date, user_id, hit_count)
SELECT a.date, a.user_id, sum(a.article_id as hits)
from (
select t.* from users_article_details AS t
WHERE NOT EXISTS (
SELECT 1
FROM do_not_email_users_tbl
WHERE email = t.email
LIMIT 1
)) a
WHERE NOT EXISTS
(SELECT 1 from users_articles b
WHERE b.date = a.date)
GROUP BY date, user_id

最佳答案

我赞成在这种情况下使用外连接。尝试:

INSERT INTO USERS_ARTICLES (DATE, USER_ID, HIT_COUNT)
SELECT a.DATE,
a.USER_ID,
SUM(a.ARTICLE_ID) AS HITS
FROM USERS_ARTICLE_DETAILS a
LEFT OUTER JOIN DO_NOT_EMAIL_USERS_TBL n
ON (n.EMAIL = a.EMAIL)
LEFT OUTER JOIN USERS_ARTICLES b
ON (b.DATE = a.DATE)
WHERE n.EMAIL IS NULL AND
b.DATE IS NULL
GROUP BY DATE, USER_ID

对列名使用保留字 DATE 可能会导致问题 - 如果是这样,请将 DATE 括在双引号中(例如“DATE”)。

分享和享受。

关于SQL - 如何在幂等插入示例中使用连接而不是 EXISTS 和 NOT EXISTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052940/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com