假设我有一个一对多的关系,比如一个歌手表,每个人都唱过几首歌:DROP TABLE 歌手;CREATE TABLE 歌手(id bigint not null auto_increment,name varchar(255) not null,PRIMARY KEY (id));
INSERT INTO singers (name) VALUES ('Joe'), ('Bob');
DROP TABLE songs;
CREATE TABLE songs (
id bigint not null auto_increment,
singer_id bigint not null,
name varchar(255) not null,
PRIMARY KEY (id)
);
INSERT INTO songs (singer_id, name) VALUES (1, "foo"), (2, "bar"), (1, "baz"), (2, "quux");
假设歌曲行按时间顺序正确写出,例如,我可以通过查询找到 Joe 唱的最新歌曲
SELECT * FROM songs WHERE singer_id = 1 ORDER BY id DESC LIMIT 1;
现在,假设我想创建一个 MySQL 视图,其中包含每个歌手的一行以及该歌手最近演唱的歌曲。换句话说,一个看起来像这样的表:
singer_id singer_name song_id song_name
1 Joe 3 baz
2 Bob 4 quux
似乎这需要以某种方式将上面的 ORDER BY / LIMIT 子句集成到视图构造/连接逻辑中——但我不知道如何。这可能吗?