Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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_Sql Server - Fatal编程技术网

Sql 如何在复杂条件下从表中选择值?

Sql 如何在复杂条件下从表中选择值?,sql,sql-server,Sql,Sql Server,我有一个表,有三列:课程名称、年份、学期 现在我想知道哪些科目在每年(2001年和2002年)的每个学期(S1和S2)都有课程 我已经试了一个小时写案例,当和分组时,通过但没有得到正确的结果 表_主题: course_name| year| semester Programming 2001 S1 Programming 2001 S2 Programming 2002 S1 Programming 2002 S2 Law 2001 S1

我有一个表,有三列:
课程名称、年份、学期

现在我想知道哪些科目在每年(2001年和2002年)的每个学期(S1和S2)都有课程

我已经试了一个小时写
案例,当
分组时,通过
但没有得到正确的结果

表_主题

course_name| year| semester
Programming   2001   S1
Programming   2001   S2
Programming   2002   S1
Programming   2002   S2
Law           2001   S1
Law           2001   S2
Law           2002   S2
Science       2001   S1
Science       2001   S2
Management    2002   S2
AI            2001   S1
Database      2001   S1
Database      2001   S2
Database      2002   S1
Database      2002   S2
预期结果:

|course_name|
 Programming
 Database
你可以在下面试试-

select course_name
from t1 a
where year in (2001,2002) and exists (select 1 from t1 b where a.course_name=b.course_name
and a.year=b.year and semester in ('S1','S2') having count(distinct semester)=2)
group by course_name
having count(distinct year)=2 
输出:

course_name
Database
Programming

问题标题表示您希望从两个表中检索数据,但在说明中您只指定了单表设计。请向我们展示您的尝试。
SELECT T.course_name
FROM
(
    SELECT course_name
    FROM table_subjects
    GROUP BY course_name,
             year
    HAVING COUNT(1) = 2
) T
GROUP BY T.course_name
HAVING COUNT(1) = 2;