使用子查询选择具有JOIN的行

时间:2016-03-31 11:04:42

标签: mysql join subquery

嘿我在使用我使用的查询从我的数据库中获取正确信息时遇到问题,我有以下数据库:

甲板

PK - ID  - int
Deckname - varchar(255)

PK - ID      - int
PK Cardname  - varchar(255)
Cardvalue    - int
Amount       - int

现在我使用以下查询:

SELECT * FROM Card WHERE ID IN (SELECT ID FROM Card WHERE Cardname = 'pickachu');

Card表具有以下值:

1    pickachu     50      1
1    charmender   55      2
2    squirtle     65      2

我收回这些行:

1    pickachu     50      1
1    charmender   55      2

ID = 1因为pickachu的id为1,我用它来获取所有ID为1的卡片。

现在,我想要名单(卡表中的ID 1与牌组中的ID 1相关)。

所以我们假设我们在Deck中有以下值:

1    myFirstDeck
2    mySecondDeck

我现在想要得到这个回报:

1    pickachu     50      1    myFirstDeck
1    charmender   55      2    myFirstDeck

我一直试图使用以下查询来获取此信息:

SELECT Card.*, Deck.Deckname FROM Card INNER JOIN Deck ON (Card.ID = Deck.ID) WHERE Card.Cardname = 'pickachu';

但这只会让pickachu给我,而不是我想要的charmender。如何调整此查询以获得所需结果?

1 个答案:

答案 0 :(得分:1)

sub-query无法删除。

SELECT c.*, d.Deckname
FROM Card as c INNER JOIN Deck as d ON c.ID = d.ID
WHERE c.ID IN (SELECT ID FROM Card WHERE Cardname = 'pickachu');