我不明白为什么这个查询不起作用:
SELECT product.maker, product.model, product.type FROM product EXCEPT
(Select top 3 with ties product.maker, product.model, product.type
FROM Product ORDER BY model DESC)
数据库方案由四个表组成:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
更新:我实际上尝试使用在线网站中的mssql输入此代码,但它仍然无效。可能是它可能的站点错误(即他们的DBMS有问题)。 * NOT EXIST似乎也不起作用,但我之前在网站上的其他查询问题中使用过它。
答案 0 :(得分:0)
您也可以尝试此查询
SELECT product.maker, product.model, product.type FROM product
MINUS
Select top 3 with ties product.maker, product.model, product.type
FROM Product ORDER BY model DESC.
希望你能达到预期的效果。
答案 1 :(得分:0)
EXCEPT和TOP是mssql(t-sql)个关键字。您是否使用标签中提到的MSSQL或MySQL来解决您的问题。如果你试图在MySQL上运行这个查询,那就是错误的原因,因为MySQL并不支持这些关键字。
在MySQL中试试这个等价物:
SELECT DISTINCT
product.maker,
product.model,
product.type FROM product
LEFT JOIN
(SELECT DISTINCT product.maker, product.model, product.type
FROM Product
ORDER BY model DESC
LIMIT 3
) as p2
ON product.maker=p2.maker
AND product.model = p2.model
AND product.type = p2.type
WHERE p2.maker IS NULL
AND p2.model IS NULL
AND p2.type IS NULL
注意:我已将DISTINCT
添加到主查询中以模拟EXCEPT:
EXCEPT返回左查询中没有的任何不同值 也可以在正确的查询中找到
并将DISTINCT
添加到子查询中以模拟TOP WITH TIES