User-defined variables in SQL queries/transformation


Is it possible to create user-defined variables in the SQL queries/transformation?


For example

@set bob='Bob'

select * from table1 where name=@bob


select * from table2 where name=@bob

...etc tableN


  • kshah008
    kshah008 Contributor

    Hi all,


    Can anybody help @ptran with their question?


  • hrh514
    hrh514 Domo Employee

    Yes, it is possible to create these variables within a MySQL data flow. The syntax however would be slightly different. You would want to use @bob:=Bob and then when referencing it within your select statement use @bob. If you experience any problems implementing this in a data flow, please feel free to email Domo Support at




  • kshah008
    kshah008 Contributor

    @ptran, did hrh514's response help answer your question?

  • ptran

    Not sure I understand.


    SET @bob:='bob';
    SELECT * FROM table WHERE name=@bob;

    I will follow-up with support, but for completeness, the above SQL gives the following error "SQL statement must be a SELECT clause if "Generate Output Table" is selected."

  • nic_lee_ent
    @ptran, where you able to figure out how to do this?
  • JacobFolsom
    JacobFolsom Domo Employee



    In my experience, you can't set user defined variables like a typical MySQL script with a SET statement upfront, but you can initialize them inline in a subquery and then reference in an outer select statement. For example, the statement below will initialize @row = 0  and increment +1 for each row in the select statement.



    SELECT mydata.*,@row := @row + 1 as `RowNumber`
    FROM mydata, (SELECT @row := 0) r;



    Technically, you could declare a variable such as @Bob in your statement and then filter on that value, like this:


    SELECT name
    FROM sample_table, (select @Bob := 'Bob') r on name = @Bob

    But that would defeat the purpose of declaring a variable and referencing it in many statements, like you indicated with your UNION approach, so I would suggest another approach:


    Step 1: Create a lookup table to store your values. This could be a webform, or a select statement to generate the columns and values in the first transform step. 

    Step 2: Join your transaction tables to the lookup table to filter on the specified values


    Hope this helps!


    Jacob Folsom
    **Say “Thanks” by clicking the “heart” in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"