MySQL -使用主键值从另一列获取相应的值



我有几个MySQL表,其中有关于音乐会的数据。以下是艺术家和表演表中的相关字段:

----------------------  --------------------
| Artists            |  | Shows            |
|--------------------|  |------------------|
| ArtistID (PK)      |  | ShowID (PK)      |
| ArtistName         |  | ArtistID (FK)    | <--- references Artists(ArtistID)
|                    |  | OpenedForID (FK) | <--- also references Artists(ArtistID)
----------------------  --------------------

我写了这个查询,列出了每个开放乐队和他们为之开放的乐队:

select ArtistName, OpenedForID
from Artists, Shows
where Shows.ArtistID = Artists.ArtistID
and OpenedForID != 999;

…它给出了以下结果:

------------------------------
| ArtistName   | OpenedForID |
|----------------------------|
| Small Band A | 4           |
| Small Band B | 5           |
| Small Band C | 6           |
------------------------------

我想要的,不知道怎么做,是在第二列显示ArtistName而不是OpenedForID。所以,使用FK显示的值。OpenedForID,它引用了艺术家。,以获取相应的ArtistName。我整个上午都在这里找答案,但没找到。我今天有点不舒服,所以我可能错过了一些明显的东西。

最终结果应该看起来更像这样:

--------------------------------
| ArtistName   | OpenedFor     | 
|------------------------------|
| Small Band A | Larger Band D |
| Small Band B | Larger Band E | 
| Small Band C | Larger Band F | 
--------------------------------

如果您有两个引用,请连接另一个Artist表。

但是使用join它们现在已经有30年了,应该一直使用,没有例外

select a1.ArtistName, a2.ArtistName
from Artists a1
JOIN Shows s ON s.ArtistID = a1.ArtistID
JOIN Artists a2 ON s.OpenedForID = a2.ArtistID 
WHERE s.OpenedForID != 999;

最新更新