2017-10-20 145 views
0

删除我有两个表MySQL的来自其他表

表1:

pnr, dmax 
01, 2017-02-02 11:10:00 
02, 2017-05-02 10:10:10 

和表2:

pnr, type, loc, dt 
01, c3, l2, 2017-02-02 11:10:00 
01, c3, l2, 2017-01-01 09:00:00 
01, c3, l3, 2017-01-01 07:54:30 
02, c5, l1, 2017-02-05 01:10:00 
02, c5, l2, 2017-03-01 19:00:10 
02, c5, l3, 2017-05-02 10:10:10 

我喜欢删除表2中的所有行,其对未在表1中发现但我坚持我有限的MySQL知识

类似.....其中pnr = pnr AND dmax!= dt

请帮助

+0

有你试过一个查询了吗? –

回答

1
DELETE table2 
FROM table2 
     LEFT JOIN table1 
      ON table1.pnr = table2.pnr AND table1.dmax = table2.dt 
WHERE table1.pnr IS NULL 

上述声明使用基本LEFT JOIN。这将在没有记录在左侧找到了正确的表返回NULL,而这些都是我们要删除的记录,所以我们增加了IS NULL where子句

+0

斑点 - 现已修改 – SEarle1986

+0

好的,添加了一个基本说明 – SEarle1986

+0

谢谢您的快速帮助先生。这是我期望的工作 – Peca

0

你将需要: DELETE FROM table2 WHERE NOT EXISTS (SELECT a.pnr, a.dmax FROM table1 a WHERE a.pnr = table2.pnr AND a.dmax = table2.dt)

+0

嗨,谢谢你的帮助。毕竟,可以肯定的是,我编写了一个PHP程序来实现所需的逻辑(PHP无论如何都是主程序的一部分),但我想跳过编写PHP。您的查询删除了比我预期更多的行。 通过@ SEarle1986在下面回答与PHP完全相同的结果。无论如何,再次感谢您的帮助 – Peca