xia0chun
V2EX  ›  问与答

请教关于 MYSQL 的 join 查询

  •  
  •   xia0chun · Nov 24, 2014 · 3946 views
    This topic created in 4369 days ago, the information mentioned may be changed or developed.

    现有两个表
    table1:
    id, name
    1, 张一
    2, 张二
    3, 张三
    4, 张四
    table2:
    id, name
    1, 张一
    3, 张三
    5, 张五

    问题:需要查询出table1中不在table2中的记录,即
    id, name
    2, 张二
    4, 张四

    由于对数据库只是学了个皮毛,希望各位指点
    ps:我现在可以查出table1中在table2中的记录,SQL如下
    SELECT * FROM table1
    right join table2
    on table1.id = table2.id

    再次表示感谢 :)

    11 replies  •  2014-11-24 18:42:22 +08:00
    xia0chun
    xia0chun
    OP
    Nov 24, 2014
    1
    自己来回答吧,再加一个where条件就可以了
    SELECT * FROM table1
    left join table2
    on table1.id = table2.id
    where table2.id is NULL
    fengchang
    fengchang
    Nov 24, 2014
    2
    把right join改成inner join就行了
    xia0chun
    xia0chun
    OP
    Nov 24, 2014
    3
    @fengchang 我想要查出table1中 不在 table2中的记录,要是用inner join应该是找出table1和table2中相同的记录吧?
    Seans
    Seans
    Nov 24, 2014❤️1
    4
    select * from table1 where id not in(select id from table2);
    feiyuanqiu
    feiyuanqiu
    Nov 24, 2014❤️1
    5
    直接用1L的SQL就行了,后面的朋友们的回复都不太靠谱...
    xia0chun
    xia0chun
    OP
    Nov 24, 2014
    6
    @Seans 嗯嗯真是难者不会 会者不难呀,感谢已发

    @feiyuanqiu 谢谢指点,感谢已发
    fengchang
    fengchang
    Nov 24, 2014
    7
    @xia0chun sorry看错了,是1L那样
    Raidal
    Raidal
    Nov 24, 2014
    8
    刚刚正好用left join和where写了条查询差集的sql
    coolzjy
    coolzjy
    Nov 24, 2014
    9
    为什么不用not in?
    iyaozhen
    iyaozhen
    Nov 24, 2014
    10
    4楼方法更简单除暴吧。
    kenzi
    kenzi
    Nov 24, 2014 via Android
    11
    我都用4楼的方法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1591 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.