【问题标题】:Get a descending list of items using two tables使用两个表获取项目的降序列表
【发布时间】: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


【解决方案1】:

您的代码看起来像 SQL Server。如果是这样,您可以在子查询中使用TOP WITH TIES

SELECT E.*
FROM EPISODIOS E
WHERE E.codepisodio IN (SELECT TOP (1) WITH TIES HS.codepisodio
                        FROM HISTORICOSERIES HS
                        GROUP BY HS.codepisodio
                        ORDER BY COUNT(*) DESC
                       )

【讨论】:

  • 直到我了解了“TOP WITH TIES”——现在我想要有一个TOP WITH BOWTIESTOP WITH TURTLENECKS,哦,好吧。
  • 确实是sqlserver。我不知道“领带上衣”,但那是学习!会尽快尝试并回复。
  • 这太完美了!我永远不会独自到达那里!谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
相关资源
最近更新 更多