这个查询是如何工作的......任何人都可以解释

时间:2015-03-12 10:58:45

标签: sql

SELECT productid,productname,price
FROM products E1 
WHERE 4 = (SELECT count(*) 
           FROM products E2 
           WHERE E1.price =E2.price)

2 个答案:

答案 0 :(得分:1)

它的工作方式如下

SELECT productid,productname,price
FROM products E1 
WHERE (SELECT count(*) FROM products E2 WHERE E1.price =E2.price) = 4

:)现在它更有意义吗?

虽然可以简化

SELECT productid,productname,price,COUNT(*) AS c
FROM products
GROUP BY PRICE
HAVING COUNT(*) = 4

答案 1 :(得分:0)

外部查询会扫描所有产品。

对于每种产品,子查询都会计算出有多少产品具有相同的价格。

过滤器(where子句)生病,避免子查询计数与四个不同。

输出不是所有有四种产品价格相同的产品。

如果有人使用MS-SQL,可以使用聚合(计数和拥有)来完成同样的事情

编辑 Hanky已经使用count发布了MS-SQL等效查询