MySQL select rows that do not have matching column in other table

前端 未结 3 1568
南笙
南笙 2020-12-13 13:21

I can\'t seem to figure this out so far. I am trying to join two tables and only select the rows in table A that do not have a matching column in table B. For example, lets

相关标签:
3条回答
  • 2020-12-13 13:30

    Try this SQL:

    SELECT users.username
    FROM  users
    LEFT JOIN sent ON sent.username = users.username
    WHERE sent.username IS NULL;
    

    The better way in my opinion would be:

    SELECT users.username
    FROM  users
    LEFT JOIN sent ON sent.id = users.id
    WHERE sent.id IS NULL;
    

    As both the id fields, would be indexed (primary key I would have thought) so this query would be better optimised than the first one I suggested.

    However you may find my first suggestion better for you, it depends on what your requirements are for your application.

    0 讨论(0)
  • 2020-12-13 13:32

    Typically, you would use NOT EXISTS for this type of query

    SELECT p.Name
    FROM   pooltest p
    WHERE  NOT EXISTS (SELECT s.Name
                       FROM   senttest s
                       WHERE  s.Name = p.Name)
    

    An alternative would be to use a LEFT OUTER JOIN and check for NULL

    SELECT p.Name
    FROM   pooltest p
           LEFT OUTER JOIN senttest s ON s.Name = p.Name
    WHERE  s.Name IS NULL
    

    Note that the implicit join syntax you are using is considered obsolete and should be replaced with an explicit join.

    0 讨论(0)
  • 2020-12-13 13:42

    May be this one can help you ....

    I had also the same problem but Solved using this this query

    INSERT INTO tbl1 (id,name) SELECT id,name from tbl2 where (name) not in(select name from tbl1);
    

    hope this one will solve your problem

    0 讨论(0)
提交回复
热议问题