Jump to content

Recommended Posts

I want to find all those records in table 'b' that have NO corresponding match on userid in table 'a', and then delete those non-matching records from table 'b'. Userid is existing in both table 'a' and 'b'

 

I know this is basic but my mind is drawing a blank right now and I could use some help.

 

Thanks.

 

 

Link to comment
https://forums.phpfreaks.com/topic/167183-solved-match-then-delete-records/
Share on other sites

http://dev.mysql.com/doc/refman/5.0/en/delete.html

 

multiple-table DELETE statements can use the same types of join allowed in SELECT statements, such as LEFT JOIN. For example, to delete rows that exist in t1 that have no match in t2, use a LEFT JOIN:

 

DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

 

Thank you!  That works great! :D 

 

Now one last quick question and I can sleep: what if I have more than one table that needs to have rows deleted in the same scenario.  Following up on your post, say, for example, to delete rows that exist in t1 that have no match in t2 OR t3

 

that looks like a tricky one.  I can of course just use the same script and change the table.column names, but I think there must be a smoother way to do it.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.