gpt4 book ai didi

mysql - mysql "where 3"中的 where 子句

转载 作者:行者123 更新时间:2023-11-29 01:28:29 25 4
gpt4 key购买 nike

我从我的表中获取了 3 个最高的薪水这里是我的查询

SELECT DISTINCT salary
FROM salary e1
WHERE 3 = (
SELECT count( DISTINCT salary )
FROM salary e2
WHERE e1.salary >= e2.salary )

它运行良好,但我想知道,为什么我们将条件设置为“Where 3”?它的表现如何?

最佳答案

您的查询很慢不是因为 3 而是因为它在内部查询中不必要地使用。 The answer由 @spencer7593 提供解释了它是如何工作的,你可以看到它一次又一次地做同样的事情。

查询可以这么简单地写成:

SELECT DISTINCT e1.salary
FROM salary e1
ORDER BY e1.salary DESC
LIMIT 3;

注意:

别名 e1 不是必需的,但我在 FORM 子句中使用了它,并在 ORDER BY 子句中使用它来明确说明什么表示 salary 的每个实例(表和字段都具有此名称)。

工作原理:
ORDER表“salary”BY字段salary中的行降序(最高薪水在前),SELECTs只有 DISTINCT 值(这是你写得很好的地方)和 LIMIT 将结果集设置为 3 行。

事实上,它会在从 salary 列中找到 3 个最大的不同值后停止执行。

如果表在字段 salary 上有一个索引,它运行起来就像风一样。如果它没有这样的索引,现在创建它:

ALTER TABLE `salary` ADD INDEX (`salary`);

关于mysql - mysql "where 3"中的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com