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: 
You need to do the subselect based on a column name, not `*`.

For example, if you had an `id` field common to both tables, you could do:

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

```

Refer to the [MySQL subquery syntax](http://dev.mysql.com/doc/refman/5.5/en/subqueries.html) for more examples.
This worked for me in Oracle:

```
SELECT a.* 
    FROM tbl1 a 
MINUS 
SELECT b.* 
    FROM tbl2 b;

```