如何用计算排名的结果做一个table?

How to make a table with the result of calculated rankings?

我想用 table 的计算排名结果制作新的 table。我与 PHP 和 MySQL.

一起工作

我通过谷歌搜索得到了一些代码,它可以在屏幕上运行。

Select User_Id, Score, @rank := @rank + 1 as Ranking
    from Rankings, (select @rank := 0) XX
    order by Score desc

我想知道如何使用这些数据创建新的 table,以便我可以随时查看排名。 我想知道这段代码是否适用于大数据(大量记录)。

任何人都可以帮助这个初学者吗?在此先感谢您的帮助。

根据 this and this,您可以使用 CREATE TABLE ... SELECT 语法。

CREATE TABLE `UserRankings` AS SELECT User_Id, Score, @rank := @rank + 1 AS Ranking
    FROM Rankings, (SELECT @rank := 0) XX
    ORDER BY Score DESC

1:CREATE TABLE ... SELECT Syntax:您可以通过在 CREATE TABLE 语句末尾添加 SELECT 语句从另一个创建一个 table。

CREATE TABLE new_table_name AS
SELECT User_Id, Score, @rank := @rank + 1 AS Ranking
FROM Rankings, (SELECT @rank := 0) XX
ORDER BY Score DESC;

注意:这将根据select查询自动检测列数据类型和列名,有时它们是不正确的。

要创建所需的列名及其数据类型,您可以在 CREATE TABLE 子句中提及。

CREATE TABLE new_table_name (user_id INT NOT NULL, rank INT)
SELECT User_Id, Score, @rank := @rank + 1 AS Ranking
FROM Rankings, (SELECT @rank := 0) XX
ORDER BY Score DESC;

2: INSERT ... SELECT Syntax: 这将用于在现有的 table.

中存储 select 语句的数据
INSERT INTO existing_table_name (user_id, rank)
SELECT User_Id, Score, @rank := @rank + 1 AS Ranking
FROM Rankings, (SELECT @rank := 0) XX
ORDER BY Score DESC;

您可以使用以下语法

基于select查询数据创建新的table
CREATE TABLE new_tbl [AS] select query;

根据您的查询

Create table Tablename AS Select User_Id, Score, @rank := @rank + 1 as Ranking
from Rankings, (select @rank := 0) XX
order by Score desc

有关详细信息,请参阅 https://dev.mysql.com/doc/refman/5.6/en/create-table-select.html