从表A中选择记录,其中4列的列等于表B列的4列

时间:2016-01-31 16:17:03

标签: sql sql-server sql-server-2008

基本上,我有两个表,一个[学生]表和一个[unit_allocation]表。 两个表都有名为course_abbr,course_name,month_of_admission和year_of_admission的列。

我想从学生表中选择记录,其中两个表中的上述4列具有相似的值。

2 个答案:

答案 0 :(得分:1)

内部联接或存在是一种典型的解决方案:

select s.*
from students s
where exists (select 1
              from units_allocation ua
              where s.course_abbr = ua.course_abbr and
                    s.course_name = ua.course_name and
                    s.month_of_admission = ua.month_of_admission and 
                    s.year_of_admission = ua.year_of_admission
              );

答案 1 :(得分:0)

一种方法是使用INTERSECT SQL Server Oracle 的工作

SELECT course_abbr, course_name, month_of_admission,year_of_admission 
FROM students
INTERSECT
SELECT course_abbr, course_name, month_of_admission,year_of_admission 
FROM units_allocation

EXISTS

时使用Mysql
SELECT *
FROM   students s
WHERE  EXISTS (SELECT 1
               FROM   units_allocation u
               WHERE  s.course_abbr = u.course_abbr
                      AND s.course_name = u.course_name
                      AND s.month_of_admission = u.month_of_admission
                      AND s.year_of_admission = u.year_of_admission)