【发布时间】:2019-01-06 16:05:43
【问题描述】:
我是 SQL 新手。 我读过名为“Sams 在 10 分钟内自学 Oracle PL/SQL”的书。 我发现它非常有趣且易于理解。有一些关于别名的信息,但是当我开始练习时,我遇到了一个我不知道其用途的别名。
这是引用http://www.sql-ex.ru/,这是数据库架构http://www.sql-ex.ru/help/select13.php#db_1,以防万一。我正在使用计算机公司数据库,即数据库编号 1。任务是:
寻找生产个人电脑但不生产笔记本电脑的制造商。
这是解决方案之一:
SELECT DISTINCT maker
FROM Product AS pcproduct
WHERE type = 'PC'
AND NOT EXISTS (SELECT maker
FROM Product
WHERE type = 'laptop'
AND maker = pcproduct.maker
);
问题是:为什么我们需要把product别名为pc_product,并在子查询中进行比较'maker = pc_product.maker'?
【问题讨论】:
-
你不想尝试不使用别名,看看会发生什么吗?
-
我已经试过了,输出列表是空的
-
现在你知道为什么需要别名了 ;-)
-
来吧伙计,这是我见过的最糟糕的解释 :)
-
输出列表为空,因为子查询假定您要从产品中选择制造商(而不是 productpc)