SQL Select 语句 Where 子句

SQL Select Statement Where Clause

List first name, last name and course id for all students that are in a course controlled by either Tony Richardson, Dennis Viehland or Kay Fielden. Order your output in ascending order of course ID.

我正在通过做一组练习题来准备 SQL 测试,上面是其中的一个。我对名称使用这样的 where 子句来回答以下问题:

where SF_F_Name in ('Tony','Dennis','Kay') and SF_L_Name in ('Richardson','Viehland','Fielden')

我一直在尝试寻找一种方法来查找名字和姓氏的特定组合,因为这种 where 子句可能 return 和 "Kay Richardson"。这是如何实现的?我还没有找到任何有关如何操作的示例。

您自己指出了 WHERE 子句中的缺陷。只需单独检查全名即可避免此问题:

WHERE (SF_F_Name = 'Tony'   AND SF_L_Name = 'Richardson') OR
      (SF_F_Name = 'Dennis' AND SF_L_Name = 'Viehland') OR
      (SF_F_Name = 'Kay'    AND SF_L_Name = 'Fielden')

您还可以将名字和姓氏列连接在一起,然后使用单个 WHERE IN:

检查全名
WHERE SF_F_NAME || ' ' || SF_L_Name IN
    ('Tony Richardson', 'Dennis Viehland', 'Kay Fielden')

在标准中 SQL 这可以写成:

where (SF_F_Name, SF_L_Name) IN (  ('Tony', Richardson'),
                                   ('Dennis', Viehland), 
                                   ('Kay','Fielden')
                                 )

Postgres、Oracle 和 DB2 支持(至少)