如何按 it 列的计数对 table 进行排序?

How to sort a table by the count of it column?

我有这个table:

CREATE TABLE Publications (
    publicationId INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (publicationId),
title VARCHAR(60) NOT NULL UNIQUE,
professorId INT NOT NULL, 
    autors INT NOT NULL,
    magazine VARCHAR(60) NOT NULL,
    post_date DATE NOT NULL, 
    FOREIGN KEY (professorId) REFERENCES Professors (professorId),  
        
    CONSTRAINT invalidPublication UNIQUE (professorId, magazine, post_date),
    CONSTRAINT invalidAutors CHECK (autors >= 1 AND autors <= 10) 
    
    
);

我想创建一个视图,returns 教授们按照他们发表的论文数量排序,所以我创建了这个视图:

CREATE OR REPLACE VIEW ViewTopAutors AS 
SELECT  professorId 
FROM publications
WHERE autors < 5
ORDER by COUNT(professorId)
LIMIT 3;

我填充了主要 table,但是当我 运行 视图时它只有 returns 一个作者(具有最高 ID 的那个)

¿我该怎么做?

我认为您的查询中缺少聚合:

CREATE OR REPLACE VIEW ViewTopAutors AS
SELECT professorId
FROM publications
WHERE autors < 5
GROUP BY professorId
ORDER BY COUNT(*)
LIMIT 3;

这将 return 发表论文数量最少 的 3 位教授。对于 return 位最优秀的 3 位教授,请在 ORDER BY 步骤中使用 DESC 排序。