查询所有没有供应P5零件的供应商的号码、供应商名称(使用EXISTS谓词与非EXISTS 谓词)
时间: 2023-11-03 15:04:17 浏览: 41
好的,以下是针对你的问题的 SQL 查询语句:
使用 EXISTS 谓词:
```
SELECT *
FROM suppliers s
WHERE NOT EXISTS (
SELECT *
FROM parts p
WHERE p.part_no = 'P5' AND s.supplier_no = p.supplier_no
);
```
使用非 EXISTS 谓词:
```
SELECT *
FROM suppliers s
WHERE supplier_no NOT IN (
SELECT supplier_no
FROM parts
WHERE part_no = 'P5'
);
```
这两个查询语句都可以达到相同的结果,即查询出所有没有供应 P5 零件的供应商的号码和名称。
相关问题
查询所有供应了P5 零件的供应商的号码、供应商名称(使用EXISTS谓词与非EXISTS谓词)
使用EXISTS谓词的查询语句:
```
SELECT sid, sname
FROM S
WHERE EXISTS (
SELECT *
FROM SP
WHERE SP.sid = S.sid AND SP.pid = 'P5'
);
```
这个查询语句的含义是先在SP表中查找所有供应了P5零件的记录,然后在S表中查找所有在SP表中存在该记录的供应商,最后查询出这些供应商的供应商号和供应商名称。
使用非EXISTS谓词的查询语句:
```
SELECT sid, sname
FROM S
WHERE sid NOT IN (
SELECT sid
FROM SP
WHERE pid <> 'P5'
);
```
这个查询语句的含义是先在SP表中查找所有不供应P5零件的供应商号,然后在S表中查找所有不在该列表中的供应商,最后查询出这些供应商的供应商号和供应商名称。
这两个查询语句的结果是一样的,只是使用了不同的方法实现。
带有exists谓词的子查询
好的,关于带有exists谓词的子查询,它是一种常用的SQL查询方式,可以用来判断一个查询结果是否存在。一般情况下,exists谓词会结合子查询使用,子查询的结果集作为exists谓词的判断条件。如果子查询返回的结果集非空,则exists谓词返回true,否则返回false。
下面是一个示例:
```
SELECT *
FROM table1 t1
WHERE EXISTS (
SELECT *
FROM table2 t2
WHERE t1.id = t2.id
);
```
这个查询语句会返回table1中所有满足条件t1.id = t2.id的记录。