I there a way to update values for top-n/limit amount of records in Snowflake?
Sample data, top rows are the ones that need to flaged:
The logic must combine SELECT n FROM limit 200 with SET FLAG = 1
Below syntax is not working:
--option 1
UPDATE TBL_NAME limit 20000
       SET FLAG = 1
--option 2
WITH CTE as (SELECT * FROM TBL_NAME LIMIT 20000)
UPDATE CTE
       SET FLAG = '1'
Advertisement
Answer
If you need to update only a limited number of rows, you can try this with seq8():
create or replace temp table many_a as select 'aaaaaaa' str from table(generator(rowcount => 100)); update many_a set str='b' where seq8()<5
Note: if you’re doing this over large amounts of data, seq8() might behave in unexpected ways. https://docs.snowflake.com/en/sql-reference/functions/seq1.html


