对于给定的数据库
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Run Code Online (Sandbox Code Playgroud)
问题是: 在 RAM 最低的 PC 中,找到生产 RAM 最低的 PC 和处理器速度最高的 PC 的打印机制造商。结果集:制造商。
让我们拆分查询!
SELECT DISTINCT maker from product Group By maker,type HAVING type IN('Printer','PC')
我认为这是错误的,因为 IN('Printer','PC') 就像 OR not AND
SELECT model,speed FROM pc WHERE ram=(SELECT MIN(ram) FROM pc) as minimumRam
Run Code Online (Sandbox Code Playgroud)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')
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我在检查站点上提交查询时,它会产生 1 个额外的错误结果:(
问题来自Link。查询验证有 2 个步骤。第二步只显示用户和正确结果之间的区别:(
小智 5
这应该可以解决您的问题:
select distinct maker from Product
where type = 'Printer' and maker in (select maker
from Product join PC on Product.model = PC.model
where ram = (select min(ram) from PC) and speed = (select max(speed) from PC
where ram = (select min(ram) from PC)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |