当前位置: 首页 > 面试题库 >

用户的MYSQL SELECT等级(大于x且小于y)

仲绍晖
2023-03-14
问题内容

我有点被php / Mysql查询卡住了。我有2张桌子:

  table_users              table_ranks
----------------    ------------------------
| id  | points |    | name | points_needed |
----------------    ------------------------
| 1   |   2    |    | lvl0 |      0        |
| 2   |   10   |    | lvl1 |      10       |
| 3   |   21   |    | lvl2 |      20       |
| 4   |   29   |    | lvl3 |      30       |
----------------    ------------------------

我需要这样的输出:

  • 用户_1 = lvl0(因为用户有2分)
  • User_2 = lvl1(因为用户刚达到10分)
  • User_4 = lvl2(因为用户尚未达到30分)

想你:)

问候。


问题答案:

你可以这样

SELECT
  tu.id,
  tr.name,
  tu.points
FROM table_ranks as tr
  LEFT JOIN (SELECT * FROM table_ranks LIMIT 1,69596585953484) as l
    ON l.points_needed = (SELECT MIN(points_needed) FROM table_ranks WHERE points_needed > tr.points_needed limit 1)
  LEFT OUTER JOIN table_users AS tu ON tu.points >= tr.points_needed AND tu.points < l.points_needed
WHERE tu.id IS NOT NULL
group by tu.id

小提琴

输出

-------------------------
| id  | points   | name |
-------------------------
| 1   |   lvl0   | 2    |
| 2   |   lvl1   | 10   |
| 3   |   lvl2   | 21   |
| 4   |   lvl2   | 29   |
-------------------------


 类似资料:
  • 问题内容: 我在PostgreSQL中有一个名为的关系,该关系包含2个字段:和,我想找到具有最高值的产品。据我所知,有两种方法可以做到: 或者 他们的执行速度有什么不同吗? 问题答案: 如果有任何行,第一个查询将失败(如Gordon所示)。 仅当所有行都具有时,第二个查询才会失败。因此,它在大多数情况下应该是可用的。(而且速度更快。) 如果在 Postgres 12或更早版本中 需要NULL安全查

  • 我有一个用电子和节点js编写的应用程序,我正在尝试运行。它使用模块端口扫描器来检查特定范围内的打开端口: 但是,我收到了这个错误: 即使我的范围显然小于65536,大于0。 在线查看,它似乎是节点v6中的错误(我有v6.5.0)。我是nodejs的新手,非常感谢有关如何解决此问题的任何帮助。谢谢。

  • 我目前正在Codecademy上学习JavaScript,我遇到了一些问题。我在一个叫做“建造石头,布,剪刀”的部分,有一个部分有一个条件,如果数学。random()大于0.33小于0.66,计算机将选择纸张。我的问题是,如何建立一个if条件,即某个东西大于X,但同时小于Y?

  • 我正在尝试对驻留在elastic中的数据执行4个操作。精确匹配(等于),包含,小于,大于。elastic中有两个选项,即query和filter,据我所知,这两个选项的作用相同,但query计算的分数与数据条件值关系最匹配。 我想做的是简单的过滤或查询(我很困惑,他们网站上提到的方式) 精确匹配,如或或 包含类似name Contains或email Contains 大于like

  • 今天我注意到这个node.js代码: 给出输出 这很奇怪;如果某物不等于0或大于0,那么它为什么大于或等于0呢?发生什么事了?

  • 给定一个有N个整数的数组A,我们需要找到子数组的最高和,使得每个元素小于或等于给定的整数X 示例:设 N=8 且数组为 [3 2 2 3 1 1 1 3] 。现在,如果 x=2,那么如果我们考虑 1 个基本索引,则通过求和 A[2] A[3] 来回答 4。如何在 O(N) 或 O(N*logN) 中执行此问题 目前,我通过检查每个可能的子阵列来采用O(N^2)方法。如何降低复杂性?