sql-metadata icon indicating copy to clipboard operation
sql-metadata copied to clipboard

merge into syntax

Open guoguozhenhaowan opened this issue 3 years ago • 1 comments

sql_metadata.Parser("""MERGE INTO wines w USING (VALUES('Chateau Lafite 2003', '24')) v ON v.column1 = w.winename WHEN NOT MATCHED INSERT VALUES(v.column1, v.column2) WHEN MATCHED UPDATE SET stock = stock + v.column2;""").tokens raise an ValueError: Not supported query type! Not supported query type: MERGE INTO wines w USING (VALUES('Chateau Lafite 2003', '24')) v ON v.column1 = w.winename WHEN NOT MATCHED INSERT VALUES(v.column1, v.column2) WHEN MATCHED UPDATE SET stock = stock + v.column2;

guoguozhenhaowan avatar Nov 04 '22 03:11 guoguozhenhaowan

I see the comment stating supported queries are "select, insert, update, replace, create table, alter table, with + select"

Request here would be to support a MERGE INTO, for it is almost the same as an UPDATE:

MERGE
INTO
  myschema.mytable e
USING (
    SELECT
        c.id 
      , SUM( c.q ) AS n
    FROM myschema.mytable    c
    WHERE
      NVL( c.f,0 ) = 0
    HAVING
      SUM( c.q ) = 0
    GROUP BY
      c.id
  )
  cte
ON
  (
    e.id       = cte.id
  )
WHEN MATCHED THEN
UPDATE
SET e.my_flag = cte.n;

hw-monkey avatar Nov 30 '22 16:11 hw-monkey