Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为下面的查询编写sql语句?_Sql_Wampserver - Fatal编程技术网

如何为下面的查询编写sql语句?

如何为下面的查询编写sql语句?,sql,wampserver,Sql,Wampserver,我有一个tablelab_时间表列,如下所示 c_code labclass day EEI4163 2019-04-09 Sunday EEI4362 2019-03-05 Monday EEI4362 2019-04-07 Tuesday EEI4456 2019-05-06 Wednesday 我想查看2019-03-05没有实验课的课程代码 select c_Code,labclass from lab_schedule where

我有一个tablelab_时间表列,如下所示

c_code    labclass      day
EEI4163   2019-04-09   Sunday
EEI4362   2019-03-05   Monday
EEI4362   2019-04-07   Tuesday
EEI4456   2019-05-06   Wednesday

我想查看2019-03-05没有实验课的课程代码

select c_Code,labclass 
from lab_schedule 
where labclass != "2019-03-05" group by c_code,labclass;
我试图通过在sql中使用GROUPBY语法来获得结果。但我预计只有EEI4163,EEI4456,但它也显示了EEI4362,这是在2019-04-07年


但EEI4362课程在2019-03-05有一个实验课。

一种方法使用聚合:

select c_Code
from lab_schedule
group by c_code
having sum(case when labclass = '2019-03-05' then 1 else 0 end) = 0

您的代码将删除labclass=2019-03-05的行,但如果课程代码在2019-03-07有lab class且在另一个日期,它仍将与另一个日期的行一起出现在结果中。 不存在以下用途:


如果只需要c_代码列

看。
结果:

您可以使用自外部联接作为替代解决方案,如下所示:

select l1.c_Code, l1.labclass
from lab_schedule l1
left outer join lab_schedule l2 on l1.c_Code = l2.c_Code and l2.labclass = '2019-03-05'
where l2.c_Code is null
group by l1.c_Code, l1.labclass

编辑:如果您只想查看c_代码,请从select和group by语句中删除l1.labclass。

我想查看2019-03-05没有实验课的课程代码是问题。如果您只想查看c_代码列,请查看我编辑的答案。
select distinct s.c_Code
from lab_schedule s
where not exists (
  select 1 from lab_schedule 
  where c_Code = s.c_Code and labclass = "2019-03-05"
)
select l1.c_Code, l1.labclass
from lab_schedule l1
left outer join lab_schedule l2 on l1.c_Code = l2.c_Code and l2.labclass = '2019-03-05'
where l2.c_Code is null
group by l1.c_Code, l1.labclass