MYSQL UPDATE query for multiple values












1















Looking to update a table from values in another table. The tables are joined on a person's first and last name. The issue is we have duplicate records where we are trying to concatenate a value for each record, however when the query goes off it only finds the first record. Table1 and Table2 both contain around 20k records.



Current query



UPDATE table1, table2 SET table1.value = CONCAT(table1.pet,",",table2.pet) 
WHERE table1.fName = table2.fName AND table1.lName = table2.lName;


Table1 Example



fName  lName   pet
===================
John Doe bird
Jane Doe bird


Table2 Example



fName lName  pet
===================
John Doe dog
Jane Doe dog
John Doe fish
John Doe cat


Expected Results in Table1



fName lName  pet
===================
John Doe bird,dog,fish,cat
Jane Doe bird,dog


Results we are currently getting



fName lName  pet
===================
John Doe bird,dog
Jane Doe bird,dog


Any help is appreciated!










share|improve this question





























    1















    Looking to update a table from values in another table. The tables are joined on a person's first and last name. The issue is we have duplicate records where we are trying to concatenate a value for each record, however when the query goes off it only finds the first record. Table1 and Table2 both contain around 20k records.



    Current query



    UPDATE table1, table2 SET table1.value = CONCAT(table1.pet,",",table2.pet) 
    WHERE table1.fName = table2.fName AND table1.lName = table2.lName;


    Table1 Example



    fName  lName   pet
    ===================
    John Doe bird
    Jane Doe bird


    Table2 Example



    fName lName  pet
    ===================
    John Doe dog
    Jane Doe dog
    John Doe fish
    John Doe cat


    Expected Results in Table1



    fName lName  pet
    ===================
    John Doe bird,dog,fish,cat
    Jane Doe bird,dog


    Results we are currently getting



    fName lName  pet
    ===================
    John Doe bird,dog
    Jane Doe bird,dog


    Any help is appreciated!










    share|improve this question



























      1












      1








      1








      Looking to update a table from values in another table. The tables are joined on a person's first and last name. The issue is we have duplicate records where we are trying to concatenate a value for each record, however when the query goes off it only finds the first record. Table1 and Table2 both contain around 20k records.



      Current query



      UPDATE table1, table2 SET table1.value = CONCAT(table1.pet,",",table2.pet) 
      WHERE table1.fName = table2.fName AND table1.lName = table2.lName;


      Table1 Example



      fName  lName   pet
      ===================
      John Doe bird
      Jane Doe bird


      Table2 Example



      fName lName  pet
      ===================
      John Doe dog
      Jane Doe dog
      John Doe fish
      John Doe cat


      Expected Results in Table1



      fName lName  pet
      ===================
      John Doe bird,dog,fish,cat
      Jane Doe bird,dog


      Results we are currently getting



      fName lName  pet
      ===================
      John Doe bird,dog
      Jane Doe bird,dog


      Any help is appreciated!










      share|improve this question
















      Looking to update a table from values in another table. The tables are joined on a person's first and last name. The issue is we have duplicate records where we are trying to concatenate a value for each record, however when the query goes off it only finds the first record. Table1 and Table2 both contain around 20k records.



      Current query



      UPDATE table1, table2 SET table1.value = CONCAT(table1.pet,",",table2.pet) 
      WHERE table1.fName = table2.fName AND table1.lName = table2.lName;


      Table1 Example



      fName  lName   pet
      ===================
      John Doe bird
      Jane Doe bird


      Table2 Example



      fName lName  pet
      ===================
      John Doe dog
      Jane Doe dog
      John Doe fish
      John Doe cat


      Expected Results in Table1



      fName lName  pet
      ===================
      John Doe bird,dog,fish,cat
      Jane Doe bird,dog


      Results we are currently getting



      fName lName  pet
      ===================
      John Doe bird,dog
      Jane Doe bird,dog


      Any help is appreciated!







      mysql






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 2 at 5:02







      cjones

















      asked Jan 2 at 4:52









      cjonescjones

      125




      125
























          2 Answers
          2






          active

          oldest

          votes


















          1














          You can try below - using group_concat() function



          update Table1 a
          join
          (
          select fName,lName, group_concat(pet) as pet1
          from Table2
          group by fName,lName
          )b on a.fName=b.fName and a.lName=b.lName
          set a.pet=concat(a.pet,',',pet1)





          share|improve this answer



















          • 1





            group_concat have a text limit, If this was small on his server, this could cause a trouble.

            – Anirudha Gupta
            Jan 2 at 4:59






          • 1





            This worked, thank you!

            – cjones
            Jan 2 at 5:12



















          0














          you can try this also



           UPDATE Table1  X SET 
          X.Column1=Y.column2
          from(
          select Column2 from tabel2
          where column3=column4
          ) Y where X.column4=Y.column4





          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001363%2fmysql-update-query-for-multiple-values%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You can try below - using group_concat() function



            update Table1 a
            join
            (
            select fName,lName, group_concat(pet) as pet1
            from Table2
            group by fName,lName
            )b on a.fName=b.fName and a.lName=b.lName
            set a.pet=concat(a.pet,',',pet1)





            share|improve this answer



















            • 1





              group_concat have a text limit, If this was small on his server, this could cause a trouble.

              – Anirudha Gupta
              Jan 2 at 4:59






            • 1





              This worked, thank you!

              – cjones
              Jan 2 at 5:12
















            1














            You can try below - using group_concat() function



            update Table1 a
            join
            (
            select fName,lName, group_concat(pet) as pet1
            from Table2
            group by fName,lName
            )b on a.fName=b.fName and a.lName=b.lName
            set a.pet=concat(a.pet,',',pet1)





            share|improve this answer



















            • 1





              group_concat have a text limit, If this was small on his server, this could cause a trouble.

              – Anirudha Gupta
              Jan 2 at 4:59






            • 1





              This worked, thank you!

              – cjones
              Jan 2 at 5:12














            1












            1








            1







            You can try below - using group_concat() function



            update Table1 a
            join
            (
            select fName,lName, group_concat(pet) as pet1
            from Table2
            group by fName,lName
            )b on a.fName=b.fName and a.lName=b.lName
            set a.pet=concat(a.pet,',',pet1)





            share|improve this answer













            You can try below - using group_concat() function



            update Table1 a
            join
            (
            select fName,lName, group_concat(pet) as pet1
            from Table2
            group by fName,lName
            )b on a.fName=b.fName and a.lName=b.lName
            set a.pet=concat(a.pet,',',pet1)






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jan 2 at 4:57









            fa06fa06

            17.1k21018




            17.1k21018








            • 1





              group_concat have a text limit, If this was small on his server, this could cause a trouble.

              – Anirudha Gupta
              Jan 2 at 4:59






            • 1





              This worked, thank you!

              – cjones
              Jan 2 at 5:12














            • 1





              group_concat have a text limit, If this was small on his server, this could cause a trouble.

              – Anirudha Gupta
              Jan 2 at 4:59






            • 1





              This worked, thank you!

              – cjones
              Jan 2 at 5:12








            1




            1





            group_concat have a text limit, If this was small on his server, this could cause a trouble.

            – Anirudha Gupta
            Jan 2 at 4:59





            group_concat have a text limit, If this was small on his server, this could cause a trouble.

            – Anirudha Gupta
            Jan 2 at 4:59




            1




            1





            This worked, thank you!

            – cjones
            Jan 2 at 5:12





            This worked, thank you!

            – cjones
            Jan 2 at 5:12













            0














            you can try this also



             UPDATE Table1  X SET 
            X.Column1=Y.column2
            from(
            select Column2 from tabel2
            where column3=column4
            ) Y where X.column4=Y.column4





            share|improve this answer






























              0














              you can try this also



               UPDATE Table1  X SET 
              X.Column1=Y.column2
              from(
              select Column2 from tabel2
              where column3=column4
              ) Y where X.column4=Y.column4





              share|improve this answer




























                0












                0








                0







                you can try this also



                 UPDATE Table1  X SET 
                X.Column1=Y.column2
                from(
                select Column2 from tabel2
                where column3=column4
                ) Y where X.column4=Y.column4





                share|improve this answer















                you can try this also



                 UPDATE Table1  X SET 
                X.Column1=Y.column2
                from(
                select Column2 from tabel2
                where column3=column4
                ) Y where X.column4=Y.column4






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Jan 22 at 5:31

























                answered Jan 2 at 5:04









                KandyKandy

                348414




                348414






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001363%2fmysql-update-query-for-multiple-values%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

                    Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

                    A Topological Invariant for $pi_3(U(n))$