php - 有没有办法根据它们属于哪一列来对 MySql 中的值进行排名?

标签 php mysql sql rank

好吧,假设我们有 4 列和 3 行数据。

|user_id|pick_1|pick_2|pick_3|
-------------------------------
|fred   |C++   |java  | php  |
------------------------------
|eric   |java  |C++   | php   |
------------------------------
|sam    | C++  | php  | java |
------------------------------

所以现在,用户正在输入他们最喜欢的语言。第一个选择 (pick_1) 将是最喜欢的编程语言,第二个选择 (pick_2) 将是第二个最喜欢的编程语言,依此类推。

我怎样才能以某种方式组织它,以便我可以根据编程语言的列来给出分值。所以也许pick_1可以给3分,pick_2可以给2分,pick_3可以给1分。

所以打分时,C++ 8分,java 6分,php 4分。

这样我就可以给出一个总体排名,说明什么是更受欢迎的编程语言。像这样

  |rank|language|points|
  ----------------------
  |  1 |  C++   | 8    |
  ----------------------
  |  2 |  java  | 6    |
  ----------------------
  |  3 |  php   | 4    |
  ----------------------

它甚至不需要积分系统,我只是想不出另一种方法来按照喜欢到不喜欢的等级对语言进行排名。因此,如果有另一种方法可以产生相同的结果,请告诉我。否则我怎么能做到这一点。最好只在 MySql 中。我目前正在使用 PHP。

感谢阅读。

最佳答案

你需要一个更简单的结构

User_ID | Pick | Points
Fred      c++     3
Fred      php     2
Fred      java    1

这样你就可以做一个简单的sum(points) group by pick

关于php - 有没有办法根据它们属于哪一列来对 MySql 中的值进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629865/

相关文章:

sql - 高效的SQL统计最近X行中的事件

mysql - 优化 8.5 亿行 MySQL 表的聚合

php - 查询 SQL select 选项中的任一值

mysql - 显示 MySQL 中的 phpMyAdmin 数据库

javascript - 使用 Javascript Canvas 数据填充 html 文本框

php - 列出类别以及每个项目的计数

mysql - Knex NodeJS 如何选择每行具有最大日期的行

sql - Postgres SQL 多外连接生成时间序列

php - Docker 中的 nginx 和 php-fpm

php - 为什么标准 session 生命周期是 24 分钟(1440 秒)?