SQL Server:select语句中出现错误
我创建了一个包含电影和演员等信息的数据库。除此之外,我还创建了以下表格:SQL Server:select语句中出现错误,sql,sql-server,database,Sql,Sql Server,Database,我创建了一个包含电影和演员等信息的数据库。除此之外,我还创建了以下表格: CREATE TABLE Movie ( Movie_ID PRIMARY KEY NOT NULL idenity(1,1), Movie_title varchar(50), .... ) CREATE TABLE Actor ( Actor_ID PRIMARY KEY NOT NULL identity(1,1), Actor_Name varchar(50), Actor_S
CREATE TABLE Movie
(
Movie_ID PRIMARY KEY NOT NULL idenity(1,1),
Movie_title varchar(50),
....
)
CREATE TABLE Actor
(
Actor_ID PRIMARY KEY NOT NULL identity(1,1),
Actor_Name varchar(50),
Actor_Surname varchar(50),
.....
)
我使用下表将它们链接起来:
CREATE TABLE Has_Actor
(
Has_Actor_ID PRIMARY KEY NOT NULL identity(1,1),
Has_Actor_M_ID foreign key references Movie(Movie_ID),
Has_Actor_A_ID foreign key references Actor(Actor_ID),
)
现在我想查看演员在大多数电影中扮演的角色的姓名,所以我尝试了以下选择语句:
SELECT
Actor.Actor_Name, Actor.Actor_Surname
FROM
Actor, Has_Actor
WHERE
Has_Actor_A_ID = Actor.Actor_ID
AND Actor.Actor_ID = (SELECT MAX(distinct COUNT(Has_Actor.Actor_ID)))
当我执行此操作时,我得到以下错误:
无法对包含聚合或子查询的表达式执行聚合函数
我知道在使用max
和count
函数时出现了一个错误,但我不知道哪里出了问题。你能帮帮我吗?试试这个
SELECT Actor.Actor_Name, Actor.Actor_Surname
FROM Actor,
(
SELECT TOP 1 Actor_ID,COUNT(Actor_ID) as counting from Has_Actor
Group by Actor_ID order by COUNT(Actor_ID) DESC
)
Has_Actor
WHERE Has_Actor_A_ID=Actor.Actor_ID
MAX(不同计数)
。这是一个奇怪的结构。聚合函数不嵌套
您显然正在学习SQL,因此我已修复了您的查询,因此您可以学习执行以下操作:
join
语法。切勿在from
子句中使用逗号SELECT TOP 1 a.Actor_Name, a.Actor_Surname
FROM Actor a join
Has_Actor ha
on ha.Has_Actor_A_ID = a.Actor_ID
GROUP BY a.Actor_Name, a.Actor_Surname
ORDER BY COUNT(*) desc
编辑:
如果您想要所有演员(在问题中模棱两可),那么您可以使用带领带的选项TOP
(如哈姆雷特评论中所建议的)。否则,使用CTE表示查询:
WITH ActorCounts as (
SELECT a.Actor_Name, a.Actor_Surname, COUNT(*) as NumMovies
FROM Actor a join
Has_Actor ha
on ha.Has_Actor_A_ID = a.Actor_ID
GROUP BY a.Actor_Name, a.Actor_Surname
)
SELECT Actor_Name, Actor_Surname
FROM ActorCounts ac
WHERE NumMovies = (SELECT MAX(NumMovies) FROM ActorCounts);
-在这个子查询中,您没有提到表名SELECT MAX(distinct COUNT(Has_Actor.Actor_ID))TOP 1和TIES
是相当不错的,出现以下错误:在select top 1和group by语句中:无法绑定多部分标识符“Actor_ID”。在两个计数函数中:where语句中的列名“Actor\u ID”无效:无效列名具有\u Actor\u ID