作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了这个用于执行幂等插入的 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/
我是一名优秀的程序员,十分优秀!