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 支持(至少)
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 支持(至少)