【发布时间】:2021-04-02 02:53:45
【问题描述】:
CREATE TABLE [dbo].[HistoricoSeries] (
[IDHistoricoSeries] INT IDENTITY (1, 1) NOT NULL,
[IDUtilizador] INT NOT NULL,
[codepisodio] INT NOT NULL,
CONSTRAINT [PK_historicoseries] PRIMARY KEY CLUSTERED ([IDHistoricoSeries] ASC),
CONSTRAINT [FK_96] FOREIGN KEY ([IDUtilizador]) REFERENCES [dbo].[Utilizadores] ([IDUtilizador]),
CONSTRAINT [FK_hse] FOREIGN KEY ([codepisodio]) REFERENCES [dbo].[EPISODIOS] ([codepisodio])
);
CREATE TABLE [dbo].[EPISODIOS] (
[idepisodio] INT IDENTITY (1, 1) NOT NULL,
[codepisodio] INT NOT NULL,
[codserie] INT NOT NULL,
[codtemporada] INT NOT NULL,
[numeroepisodio] INT NOT NULL,
[tituloepisodio] VARCHAR (53) NOT NULL,
[duracaominutos] INT NOT NULL,
PRIMARY KEY CLUSTERED ([codepisodio] ASC)
);
这些是我的表定义。
string maisVistoEpisodio = "SELECT * FROM EPISODIOS WHERE EPISODIOS.codepisodio IN (SELECT codepisodio, count(codepisodio) AS mais_vistos FROM HISTORICOSERIES GROUP BY codepisodio ORDER BY COUNT (codepisodio) DESC)";
这是我的 SQL Server 查询,我已经有一段时间没有结果了。
我的最终目标是从表 EISODIOS 中列出观看次数最多的剧集,但错误
当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
自己出现了,我不知道如何解决。
谁能解释一下? 谢谢。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。请解释一下“最受关注”与数据有何关系。
-
A
WHERE IN (SELECT ...)子查询必须返回单列,但您的子查询返回两列。 -
您应该使用
JOIN而不是WHERE IN
标签: sql sql-server greatest-n-per-group