【发布时间】:2013-06-13 14:01:14
【问题描述】:
对于给定的数据库
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
问题是: 在 RAM 最低的 PC 中,寻找同时生产 RAM 最低、处理器速度最快的 PC 的打印机制造商。结果集:制造商。
让我们拆分查询!
- 寻找也生产 PC 的打印机制造商
SELECT DISTINCT maker from product Group By maker,type HAVING type IN('打印机','PC')
我认为这是错误的,因为 IN('Printer','PC') 就像 OR not AND
- RAM 最低的电脑
SELECT model,speed FROM pc WHERE ram=(SELECT MIN(ram) FROM pc) as minimumRam
- 在最低 RAM 的 PC 中速度最高的处理器
WHERE lowestRam.speed=(SELECT MAX(speed) FROM pc WHERE ram=(SELECT MIN(ram) FROM pc))
查询自己!
SELECT DISTINCT maker FROM
(SELECT DISTINCT model,speed FROM pc WHERE ram=(SELECT MIN(ram) FROM pc)) as lowestRam
INNER JOIN product
ON product.model=lowestRam.model
WHERE
lowestRam.speed=(SELECT max(speed) FROM pc WHERE ram=(SELECT MIN(ram) FROM pc))
Group By maker,type HAVING type IN( 'Printer' ,'PC')
不幸的是,当我在检查网站上提交查询时,它会产生 1 个额外的错误结果:(
问题来自Link。 查询验证有 2 个步骤。第二步仅显示用户和正确结果之间的差异:(
【问题讨论】:
-
额外的意外结果是什么?
-
我使用这个站点来学习 sql sql-ex.ru(问题 #25)。查询验证有 2 个步骤。第二步只显示用户和正确结果之间的区别:(
-
我有一点建议:几乎所有需要 DISTINCT 关键字才能正常工作的查询都不正确 :)
标签: sql