Question: How to select all rows in one table that do not appear on another?

Table1:

```
+-----------+----------+------------+
| FirstName | LastName | BirthDate  |
+-----------+----------+------------+
| Tia       | Carrera  | 1975-09-18 |
| Nikki     | Taylor   | 1972-03-04 |
| Yamila    | Diaz     | 1972-03-04 |
+-----------+----------+------------+

```

Table2:

```
+-----------+----------+------------+
| FirstName | LastName | BirthDate  |
+-----------+----------+------------+
| Tia       | Carrera  | 1975-09-18 |
| Nikki     | Taylor   | 1972-03-04 |
+-----------+----------+------------+

```

Example output for rows in Table1 that are not in Table2:

```
+-----------+----------+------------+
| FirstName | LastName | BirthDate  |
+-----------+----------+------------+
| Yamila    | Diaz     | 1972-03-04 |
+-----------+----------+------------+

```

Maybe something like this should work:

```
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)

```

Answer: 
If you have 300 columns as you mentioned in another comment, and you want to compare on all columns (assuming the columns are all the same name), you can use a `NATURAL LEFT JOIN` to implicitly join on all matching column names between the two tables so that you don't have to tediously type out all join conditions manually:

```
SELECT            a.*
FROM              tbl_1 a
NATURAL LEFT JOIN tbl_2 b
WHERE             b.FirstName IS NULL

```
Try this simple query. It works perfectly.

```
select * from Table1 where (FirstName,LastName,BirthDate) not in (select * from Table2);

```