希望创建仅显示一列的子查询 MYSQL
Looking to create a subquery that displays only one column MYSQL
此数据库用于图书借阅系统。如果学生拿了一本书的副本,系统会接受那里的学号并给他们一个 return 的书的日期。这是我正在使用的两个 table
贷款 table:
CREATE TABLE loan (
`code` INT NOT NULL,
`no` INT NOT NULL,
taken DATE NOT NULL,
due DATE NOT NULL,
`return` DATE NULL,
CONSTRAINT pri_loan PRIMARY KEY (taken),
CONSTRAINT for_loan
FOREIGN KEY (`code`) REFERENCES copy (`code`),
FOREIGN KEY (`no`) REFERENCES student (`no`));
学生table:
CREATE TABLE student (
`no` INT NOT NULL,
`name` VARCHAR(30) NOT NULL,
school CHAR(3) NOT NULL,
embargo BIT NOT NULL,
CONSTRAINT pri_student PRIMARY KEY (`no`));
首先,我要计算一本书的最晚截止日期(它将显示该书的代码以及该书的最晚截止日期是什么时候)
我已经通过使用完美运行的代码完成了
SELECT `code`, max(due)
FROM loan
GROUP BY `code`
现在我想修改此查询,以便它获取每本书的最新到期日期,但只会显示拥有该书的学号 (no
)。为此,我需要使用一个我知之甚少的子查询,因为我才刚刚开始使用 MySQL。基本上我不确定如何创建这个子查询,我想知道是否有人可以帮助我并解释它而不仅仅是向我展示代码。
您要查找的是 HAVING
语法:
SELECT
`no` as student
FROM
`loan`
GROUP BY
`code`
HAVING
DATETIME(`due`) = MAX(DATETIME(`due`));
HAVING
允许您向 SELECT
语句添加一个条件,该语句根据可用值(包括选定的列及其最终值,这在您执行操作时非常方便)计算)。
查看此处了解更多信息:https://www.guru99.com/group-by.html
此数据库用于图书借阅系统。如果学生拿了一本书的副本,系统会接受那里的学号并给他们一个 return 的书的日期。这是我正在使用的两个 table
贷款 table:
CREATE TABLE loan (
`code` INT NOT NULL,
`no` INT NOT NULL,
taken DATE NOT NULL,
due DATE NOT NULL,
`return` DATE NULL,
CONSTRAINT pri_loan PRIMARY KEY (taken),
CONSTRAINT for_loan
FOREIGN KEY (`code`) REFERENCES copy (`code`),
FOREIGN KEY (`no`) REFERENCES student (`no`));
学生table:
CREATE TABLE student (
`no` INT NOT NULL,
`name` VARCHAR(30) NOT NULL,
school CHAR(3) NOT NULL,
embargo BIT NOT NULL,
CONSTRAINT pri_student PRIMARY KEY (`no`));
首先,我要计算一本书的最晚截止日期(它将显示该书的代码以及该书的最晚截止日期是什么时候) 我已经通过使用完美运行的代码完成了
SELECT `code`, max(due)
FROM loan
GROUP BY `code`
现在我想修改此查询,以便它获取每本书的最新到期日期,但只会显示拥有该书的学号 (no
)。为此,我需要使用一个我知之甚少的子查询,因为我才刚刚开始使用 MySQL。基本上我不确定如何创建这个子查询,我想知道是否有人可以帮助我并解释它而不仅仅是向我展示代码。
您要查找的是 HAVING
语法:
SELECT
`no` as student
FROM
`loan`
GROUP BY
`code`
HAVING
DATETIME(`due`) = MAX(DATETIME(`due`));
HAVING
允许您向 SELECT
语句添加一个条件,该语句根据可用值(包括选定的列及其最终值,这在您执行操作时非常方便)计算)。
查看此处了解更多信息:https://www.guru99.com/group-by.html