Well to answer your first question you could use
(SELECT DISTINCT t1.email FROM tableA as t1)
UNION
(SELECT DISTINCT t2.email FROM tableB as t2)
That should produce a UNIQUE list of ALL emails from both tables. You don't need to show both t1.email and t2.email on the same select (as your original shows). In both of your conditions you would either have the same email for BOTH t1 and t2 (when WHERE is an EQUALS) which is redundant, or you would have a huge (depending upon your db entries) list of completely different emails with each row (when the WHERE is NOT EQUAL). In this case you would be matching up EACH email (one at a time) from tableA with EACH (and EVERY) email from tableB . This is why your query (as you put it) blew up. It didn't blow up, it's just a lot of work, and of course you now have duplicates.
The use of the UNION and DISTINCT keywords in the SQL achieves (I believe) your result.
For your NEXT quesiton (Assuming you want ONLY email addresses in the new table) you could do this:
INSERT INTO tableC
(SELECT DISTINCT t1.email FROM tableA as t1)
UNION
(SELECT DISTINCT t2.email FROM tableB as t2)
This ASSUMES tableC is already created and can handle the data expected and that there is ONLY ONE column.
Good luck
Paul Gardner
------------------
PHP-LIVE help
Via Web @
http://www.mnetweb.co.uk/irc
Via IRC Client pgardner.net:6667
room #PHP