SQL EXISTS
时间:2018-11-15 17:16:06 来源:igfitidea点击:
使用SQL EXISTS测试子查询中的行是否存在
在本教程中,将学习如何使用SQL EXISTS操作符来测试子查询是否有返回任意行。
如果你还不了解关于子查询的内容,可以先学习SQL子查询的内容。
SQL EXISTS操作符介绍
EXISTS操作符用于检查子查询是否返回行。
下面是EXISTS操作符的语法:
WHERE EXISTS (subquery)
如果子查询返回至少一行,则表达式EXISTS (subquery)返回TRUE,否则返回FALSE。
注意,需要将子查询放在EXISTS操作符后面的括号中。
可以将NOT操作符与EXISTS操作符一起使用。
WHERE NOT EXISTS (subquery);
SQL EXISTS操作符示例
我们先修改一下库存
UPDATE inventory SET qty = 0 WHERE itemid = 'EST-1'; UPDATE inventory SET qty = 0 WHERE itemid = 'EST-2'; UPDATE inventory SET qty = 0 WHERE itemid = 'EST-5'; UPDATE inventory SET qty = 0 WHERE itemid = 'EST-6'; DELETE FROM inventory WHERE itemid = 'EST-7' LIMIT 1;
然后使用EXISTS操作符查找还有库存的产品型号。对于item表中的每个item,检查inventory表中qty是否大于0
SELECT itemid,attr1 FROM item WHERE EXISTS( SELECT itemid FROM inventory WHERE inventory.itemid = item.itemid AND qty > 0 )
和NOT搭配使用,我们就可以找出已经没有库存的产品型号:
SELECT itemid,attr1 FROM item WHERE NOT EXISTS( SELECT itemid FROM inventory WHERE inventory.itemid = item.itemid AND qty > 0 );
在SQL EXISTS操作符中子查询返回NULL的情况
如果子查询返回NULL,则EXIST NULL表达式将返回TRUE。
让我们看一下下面的例子:
SELECT itemid,attr1 FROM item WHERE EXISTS( SELECT NULL );