在mysql上转换子查询的连接
我需要更改以下代码以使用子查询:在mysql上转换子查询的连接,mysql,sql,subquery,Mysql,Sql,Subquery,我需要更改以下代码以使用子查询: SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción FROM artist INNER JOIN album ON artist.artistid = album.artistid INNER JOIN track ON album.albumid = track.albumid; 到目前为止,我一直在尝试的是: SELECT artist.name AS Band
SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción
FROM artist
INNER JOIN album
ON artist.artistid = album.artistid
INNER JOIN track
ON album.albumid = track.albumid;
到目前为止,我一直在尝试的是:
SELECT artist.name AS Banda, album.title AS Album, track.name AS Canción
FROM artist, album,track
WHERE artist.artistid IN (SELECT album.artistid FROM album, track where album.albumid = track.albumid);
在MySQL中不使用
JOIN
相当复杂:
select (select a.name from artist where a.artistid = t.artistid) as banda,
t.albumname,
t.Canción
from (select t.*,
(select al.title from album al where al.albumid = t.albumid) as albumname,
(select al.artistid from album al where al.albumid = t.albumid) as artistid
from track t
) t;
要编写的查询:
select (select a.name
from artist a
where a.artistid in (select al.artistid
from album al
where al.albumid = t.albumid
)
) as banda,
(select al.title
from album al
where al.trackid = t.trackid
) as album,
t.name as Canción
from tract t;
不幸的是,MySQL通常无法识别嵌套的correlation子句引用。连接是最好的/干净的解决方案。你为什么不必要地想把它复杂化?这只是为了学术目的的比较。非常感谢。我必须将t.trackid更改为t.albumid才能工作。@DexterNaru。我很惊讶你接受了一个已经加入的答案。这似乎与你的问题不一致。