EXCEPT语句错误

时间:2014-06-06 04:08:29

标签: mysql sql

我不明白为什么这个查询不起作用:

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似乎也不起作用,但我之前在网站上的其他查询问题中使用过它。

2 个答案:

答案 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或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