Database 1 Database 2
||==============|| ||==============||
||user || value || ||user || value ||
||-----||-------|| ||-----||-------||
|| 1 || 50 || || 1 || 50 ||
|| 2 || 50 || || 2 || 50 ||
|| 3 || 50 || || 3 || 40 ||
|| 4 || 40 || || 4 || 40 ||
|| 5 || 40 || || 5 || 30 ||
|| 6 || 40 || || 6 || 20 ||
|| 7 || 40 || || 7 || 20 ||
|| 8 || 30 || || 8 || 10 ||
|| 9 || 30 || || 9 || 10 ||
||==============|| ||==============||
我需要搜索前 5 个最高值,但我需要的是具有 50 和 40 个值的 7 个用户,而不是仅 5 个结果。
我不能忽视他们其他的顶级用户。 如果可以用 SQL 来完成那就太好了。如果没有 PHP 帮助就可以了。
Result 1 Result 1
||==============|| ||==============||
||user || value || ||user || value ||
||-----||-------|| ||-----||-------||
|| 1 || 50 || || 1 || 50 ||
|| 2 || 50 || || 2 || 50 ||
|| 3 || 50 || || 3 || 50 ||
|| 4 || 40 || || 4 || 50 ||
|| 5 || 40 || || 5 || 50 ||
|| 6 || 40 || ||==============||
|| 7 || 40 ||
||==============||
最佳答案
SELECT user, value
FROM Database
WHERE value in (
SELECT value
FROM Database
ORDER BY value DESC
LIMIT 5)
)
ORDER BY value DESC, user
另一种方法是:
SELECT user, value
FROM Database
WHERE value >= (SELECT MIN(value)
FROM (SELECT value
FROM Database
ORDER BY value DESC
LIMIT 5) AS x
)
ORDER BY value DESC, user
关于php - 如何在 SQL 中获取超过限制 5 的多个相同输出的 TOP 5 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171873/