mysql - 当我运行此查询时,为什么其他参与者会获取特定于其他参与者的值?

标签 mysql sql mysql-workbench

DROP DATABASE IF EXISTS ACTOR;
CREATE DATABASE ACTOR;
USE ACTOR;

CREATE TABLE IF NOT EXISTS actor(
    actorID INT PRIMARY KEY,
    birth_name VARCHAR(50) NOT NULL,
    age INT,
    reside VARCHAR(45) NOT NULL,
    partner VARCHAR(45)
    );

CREATE TABLE IF NOT EXISTS movie(
    movieID INT PRIMARY KEY,
    movie_name VARCHAR(50) NOT NULL,
    year_made INT
);

CREATE TABLE IF NOT EXISTS tag(
    tagID INT PRIMARY KEY,
    tag_list VARCHAR(50) NOT NULL,
    actorID INT REFERENCES actor(actorID)
);

CREATE TABLE IF NOT EXISTS rating(
    ratingID INT PRIMARY KEY,
    actorID INT REFERENCES actor(actorID),
    movieID INT REFERENCES movie(movieID),
    actor_rating DECIMAL(3,1) NOT NULL,
    movie_rating DECIMAL(3,1) NOT NULL
);


INSERT INTO actor VALUES
    (1,'Benjamin Géza Affleck-Boldt',47,'US','Kelleth Cuthbert'),
    (2,'Caleb Casey Affleck',44,'US','Floriana Lima'),
    (3,'Kevin Norwood Bacon',61,'US','Kyra Sedgwick'),
    (4,'Alexander Rae Baldwin III',61,'US','Hilaria Baldwin'),
    (5,'Jason Kent Bateman',50,'US','Amanda Anka');

INSERT INTO movie VALUES
    (11,'Armageddon',1998),
    (12,'American Pie',1999),
    (13,'Apollo 13',1995),
    (14,'The Departed',2006),
    (15,'Hancock',2008)
;

INSERT INTO tag VALUES
    (21,'actor, american, director',1),
    (22,'actor, american, talented',2),
    (23,'actor, american, musician',3),
    (24,'actor, american, funny',4),
    (25,'actor, american, Cute',5)
;

INSERT INTO rating VALUES
    (51,1,11,6.2, 6.2),
    (52,2,12,6.7, 6.1),
    (53,3,13,7.1, 7.0),
    (54,4,14,6.6, 8.0),
    (55,5,15,7.2, 5.9)
    ;


SELECT birth_name, actor_rating
FROM actor, rating
WHERE age IN(61)
;

如果年龄为 61,我会尝试返回出生姓名和 Actor 等级

查询结果

Kevin Norwood Bacon     6.2
Alexander Rae Baldwin   6.2
Kevin Norwood Bacon     6.7
Alexander Rae Baldwin   6.7
Kevin Norwood Bacon     7.1
Alexander Rae Baldwin   7.1
Kevin Norwood Bacon     6.6
Alexander Rae Baldwin   6.6
Kevin Norwood Bacon     7.2
Alexander Rae Baldwin   7.2

我该如何解决这个问题,以免每个 Actor 都获得与其他 Actor 相关的值? 我查看了屏幕,试图剖析这样一个简单查询的问题,但我仍然不知道是什么原因造成的。可能是我的代码错误,还是我的查询错误?我正在参加初学者类(class),只是从简单的查询开始,所以坚持下去将不胜感激,谢谢。

最佳答案

尝试使用此查询:

SELECT birth_name, actor_rating
FROM actor, rating
WHERE age IN(61) and rating.actorID = actor.actorID

关于mysql - 当我运行此查询时,为什么其他参与者会获取特定于其他参与者的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59004076/

相关文章:

增加innodb缓冲池后MySQL出错

c# - 如何限制对 MVC5 中某些操作的访问?

mysql - 错误 2003 (HY000) : Can't connect to MySQL server on [IP] (111 "Connection refused")

sql - Rails 包含条件不从左表返回所有结果的查询

mysql - MySQL 中何时使用单引号、双引号和反引号

php - MYSQL 查询中的多选语句

java - prepareStatement 为 getPassword 抛出错误

mysql - 在 MySQL Workbench 中导出数据库

mysql - 强制 mysqldump 将 row_format 值添加到 CREATE TABLE 语句

mysql - 将 MySQL 表从一垂直列转换为多水平列