我们想要按类别查找产品。
select * from product p where p.category in ('cat1', 'cat2')
如果cat1或cat2中没有产品,则此SQL将返回0行,不幸的是,如果cat1和cat2拼写错误,则会返回0行。如果这些类别不存在,我想获得SQL异常。
这里用伪代码说明,注意使用保证
select * from product p where p.category in
(select c.id from category c where c.id guaranteed in ('cat1', 'cat2'))
或使用连接而不是子选择。主键现在是一个很容易出错的数字
select p.* from product p
inner join category c on c.id = p.category
where c.id guaranteed in (56, 234)
如果不是在纯SQL中,Oracle或SQL服务器是否具有此功能?