SQL - INSERT IF NOT EXISTS 基于 COUNT
SQL - INSERT IF NOT EXISTS based on COUNT
我需要编写一个 INSERT
语句,这样如果列中的值不存在或该值的 COUNT
存在的行数少于 (<) 特定行数将插入新数据(如果值的 COUNT
大于或等于所述数字,则不会发生任何事情)。
这个 SQL 解决了第一个标准,但没有解决第二个...
CREATE OR REPLACE TABLE day_count_table (day1 DATE, col1 STRING);
INSERT INTO day_count_table VALUES ('2022-04-01','Testing April 1, 2022');
INSERT INTO day_count_table VALUES ('2022-04-02','Testing April 2, 2022');
CREATE OR REPLACE TABLE day_count_table_temp (day1 DATE, col1 STRING);
INSERT INTO day_count_table_temp VALUES ('2022-04-03','Testing April 3, 2022');
-- This works for the first criteria, but not sure how to incorporate the COUNT criteria
INSERT INTO day_count_table
SELECT * FROM day_count_table_temp a
WHERE NOT EXISTS (SELECT 1 FROM day_count_table b WHERE b.day1 = a.day1);
如果您将 WHERE 更改为:
WHERE 5 > (SELECT count(*) FROM day_count_table b WHERE b.day1 = a.day1);
其中 5 是您希望小于的数字 - 这不会捕捉两种情况...即:如果没有行,则计数 (*) 将为 0,如果行数少于您的限制,你很好。
我需要编写一个 INSERT
语句,这样如果列中的值不存在或该值的 COUNT
存在的行数少于 (<) 特定行数将插入新数据(如果值的 COUNT
大于或等于所述数字,则不会发生任何事情)。
这个 SQL 解决了第一个标准,但没有解决第二个...
CREATE OR REPLACE TABLE day_count_table (day1 DATE, col1 STRING);
INSERT INTO day_count_table VALUES ('2022-04-01','Testing April 1, 2022');
INSERT INTO day_count_table VALUES ('2022-04-02','Testing April 2, 2022');
CREATE OR REPLACE TABLE day_count_table_temp (day1 DATE, col1 STRING);
INSERT INTO day_count_table_temp VALUES ('2022-04-03','Testing April 3, 2022');
-- This works for the first criteria, but not sure how to incorporate the COUNT criteria
INSERT INTO day_count_table
SELECT * FROM day_count_table_temp a
WHERE NOT EXISTS (SELECT 1 FROM day_count_table b WHERE b.day1 = a.day1);
如果您将 WHERE 更改为:
WHERE 5 > (SELECT count(*) FROM day_count_table b WHERE b.day1 = a.day1);
其中 5 是您希望小于的数字 - 这不会捕捉两种情况...即:如果没有行,则计数 (*) 将为 0,如果行数少于您的限制,你很好。