gpt4 book ai didi

mysql - 选择具有临时表最大值的所有行

转载 作者:行者123 更新时间:2023-11-29 05:35:10 24 4
gpt4 key购买 nike

我想从临时表中选择值等于最大值的所有行。

临时表测试

id | value
1 | 7
2 | 6
3 | 7

预期结果:

id | value
1 | 7
3 | 7

我已经尝试了几件事,但到目前为止所有尝试(除了创建另一个具有相同内容的临时表)都失败了,因为“您不能在同一查询中多次引用临时表。” (来源:http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html)。有没有可能以比复制表格及其内容更“优雅”的方式来做到这一点?

到目前为止我测试过的内容:

SELECT table1.* FROM test table1 LEFT JOIN test table2 ON table1.value < table2.value     
WHERE table2.value IS NULL;
SELECT * FROM test WHERE value = (SELECT MAX(value) FROM test);

这是我目前的解决方案:

CREATE TEMPORARY TABLE test2 (...);
INSERT INTO test2 SELECT * FROM test;
SELECT * FROM test WHERE value = (SELECT MAX(value) FROM test2);

最佳答案

您可以尝试使用变量。以下将只扫描一次测试表(未测试):

SELECT   test.*, 
@curMax := IF(@curMax = -1, value, @curMax)
FROM test,
(SELECT @curMax := -1) r
HAVING @curMax = value OR @curMax = -1
ORDER BY value DESC;

关于mysql - 选择具有临时表最大值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384045/

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