【发布时间】:2019-07-08 15:46:09
【问题描述】:
所以,有两张桌子。一种列出所有产品信息(ID、ProductName、SupplierID、UnitPrice、Package、IsDiscontinued),另一种存储有关供应商的信息(ID、CompanyName、ContactName、City、Country...) 我需要找到产品超过 100 美元的供应商。所以给出的代码如下:
SELECT CompanyName
FROM Supplier
WHERE EXISTS
( SELECT ProductName
FROM Product
WHERE supplierID = supplier.ID
AND unitprice > 100);
我不明白为什么在子查询中我们需要选择 ProductName 而不是表 Product 中的任何其他字段?此外,当系统检测到所有单价 > 100 的产品名称且供应商 ID 与另一个表匹配时,它从哪里收集公司名称?
【问题讨论】:
-
你的 dbms 是什么?你能提供一些样本数据并期待结果吗?
-
我不明白为什么在子查询中我们需要选择 ProductName 而不是任何其他字段您可以选择任何其他列,甚至是所有列,甚至像
select 1...这样的常量甚至为空:select null.... -
SELECT 1或SELECT NULL也可以。 -
SELECT 1/0 也可以正常工作。
-
在 Postgres 中,您甚至可以完全删除列列表,其中存在
(select from product ...)也可以