mysql - 使用子查询通过 JOIN 选择行

标签 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。我如何调整此查询以获得所需的结果?

最佳答案

无法删除子查询

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');

关于mysql - 使用子查询通过 JOIN 选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331601/

相关文章:

java - 通信链路故障,本地主机上的 MySQL 数据库未连接

mysql 子查询限制替代方案

php - 如何初始化 PHP GET 变量以避免 PHP 未定义索引通知

php - MySQL帮助: Good practice for my SQL Query

mysql - SQL 使用 OR & AND 运算符(新手)

Mysql:具有最小值的行并根据大小写优先考虑条件

mysql - 1 天前和 1 周前的行之间的 SQL 差异

python - Spark join 抛出 'function' object has no attribute '_get_object_id' 错误。我该如何解决?

php - mysql - 子查询和连接

mysql - Mysql 查询中 Sum 的平均值