Re: Subselect confusion
Derek Fountain wrote:
> I have a table that contains these numbers in a column:
>
> mysql> select distinct course_id from programme_courses;
> +-----------+
> | course_id |
> +-----------+
> | 1 |
> | -1 |
> | -2 |
> | 2 |
> | 3 |
> | 4 |
> | 5 |
> | 6 |
> | 7 |
> | 8 |
> | 65 |
> mysql> select distinct programme_courses.course_id from
> programme_courses where course_id not in (select course_id from courses);
> +-----------+
> | course_id |
> +-----------+
> | 1 |
> +-----------+
> 1 row in set (0.00 sec)
>
> which somewhat puzzles me. If I replace the subquery with the values I
> know it returns, it works as required:
>
> mysql> select distinct programme_courses.course_id from
> programme_courses where course_id not in (65,66,67);
> +-----------+
> | course_id |
> +-----------+
> | 1 |
> | -1 |
> | -2 |
> | 2 |
> | 3 |
> | 4 |
> | 5 |
> | 6 |
> | 7 |
> | 8 |
> | 68 |
> +-----------+
> 11 rows in set (0.00 sec)
>
> Can someone explain where I'm going wrong with my subquery?
select distinct programme_courses.course_id from
programme_courses where
programme_courses.course_id
not in (select course_id from courses); |