这个SQL语句该怎么修改

 select class_ID from Class where class_ID <> (select class_ID from Reserve where......)

假设子查询里select出class_ID为1,那么父查询就会从表Class中过滤掉 class_ID = 1的数据,现在子查询假设为null,我的想法是父查询应该显示Class表中的所有值,但是发现父查询显示是null!这是怎么回事?应该如何改才能实现我的逻辑?

怀疑问题因为null使用的关键字是“is” 而不是“=”,所以出现该问题

咋没有奖励分哦,哈哈

建议用存储过程实现:
DECLARE @Count INT
SELECT @Count= COUNT(*) FROM Class
IF @Count<>0
BEGIN
SELECT * FROM Class WHERE class_ID NOT IN (SELECT class_ID FROM Class )
END
ELSE
BEGIN
SELECT * FROM Class
END

create table Class(
-> class_ID int
-> );
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> create table Reserve(
-> class_ID int
-> );
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> insert into Class
-> values(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> insert into Reserve
-> values(1);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> /*Reserve.class_ID 为1*/
mysql> select Class.class_ID,Reserve.class_ID from Class
-> left outer join Reserve on Class.class_ID=Reserve.class_ID and true
-> where Reserve.class_ID is null;
+----------+----------+
| class_ID | class_ID |
+----------+----------+
| 2 | NULL |
| 3 | NULL |
+----------+----------+
2 rows in set (0.00 sec)

mysql>
mysql> /*Reserve.class_ID 为null*/
mysql> select Class.class_ID,Reserve.class_ID from Class
-> left outer join Reserve on Class.class_ID=Reserve.class_ID and false
-> where Reserve.class_ID is null;
+----------+----------+
| class_ID | class_ID |
+----------+----------+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
+----------+----------+
3 rows in set (0.00 sec)

mysql>
mysql> drop table Class;
Query OK, 0 rows affected (0.01 sec)

mysql> drop table Reserve;
Query OK, 0 rows affected (0.00 sec)