SELECT INTO with more than one attribution

后端 未结 2 948
南笙
南笙 2020-12-31 04:24

This instruction works:

SELECT INTO unsolvedNodes array_agg(DISTINCT idDestination)
FROM road 
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY         


        
相关标签:
2条回答
  • 2020-12-31 04:50

    In PL/pgSQL you can SELECT INTO as many variables at once as you like directly. You just had the syntax backwards:

    SELECT INTO unsolvedNodes, lengths 
           array_agg(DISTINCT idDestination), array_agg(length)
    FROM   road
    WHERE  idOrigin = ANY(solvedNodes)
    AND    NOT (idDestination = ANY(solvedNodes));
    

    You have the keyword INTO followed by a list of target variables, and you have a corresponding SELECT list. The target of the INTO clause can be (quoting the manual here):

    ...a record variable, a row variable, or a comma-separated list of simple variables and record/row fields.

    Also:

    The INTO clause can appear almost anywhere in the SQL command. Customarily it is written either just before or just after the list of select_expressions in a SELECT command, or at the end of the command for other command types. It is recommended that you follow this convention in case the PL/pgSQL parser becomes stricter in future versions.

    This is not to be confused with SELECT INTO in the SQL dialect of Postgres - which nobody should be using any more. It goes against standard SQL and will eventually be removed, most likely. The manual actively discourages its continued use:

    It is best to use CREATE TABLE AS for this purpose in new code.

    0 讨论(0)
  • 2020-12-31 04:52

    Yes,

    SELECT name,family INTO cName, cFamily FROM "CommonUsersModel";
    

    OR

    SELECT INTO cName, cFamily name,family  FROM "CommonUsersModel"
    
    0 讨论(0)
提交回复
热议问题