首页 > 解决方案 > MySQL按关键字排序不适用于从两个表的内部连接插入表

问题描述

这就是我的 MySQL 查询,关键字的顺序在这里不起作用。无法弄清楚它有什么问题。

insert into leaderboard 
select student.student_name as name , sum(marks) as total 
from marks inner join student on student.student_id = marks.student_id 
group by marks.student_id order by total desc;

排行榜表输出图像

标签: mysqlsqlsql-order-bysql-insert

解决方案


您当前的插入并不遥远,但作为实践,您应该始终明确列出要插入的目标列,即使用此版本:

INSERT INTO leaderboard (name, total)   -- or whatever the column names are called
SELECT s.student_name, SUM(m.marks)
FROM marks m
INNER JOIN student s ON s.student_id = m.student_id
GROUP BY s.student_id;

关于您在表中感知或不感知的顺序,请leaderboard注意 SQL 表是根据无序数据集建模的。也就是说,SQL 表中实际上并没有任何固有的顺序。如果要按特定顺序查看数据,请在ORDER BY查询时使用子句(而不是在插入时):

SELECT name, total
FROM leaderboard
ORDER BY total DESC;

推荐阅读