我有三张桌子。
表card
card_id | card_name
--------------------
1 | card-1
2 | card-2
3 | card-3表deck
deck_id | deck_name
---------------------
1 | deck-1
2 | deck-2
3 | deck-3表deck_meta
meta_id | deck_id | card_id
----------------------------
1 | 2 | 1
2 | 2 | 3
3 | 1 | 1
4 | 1 | 2
5 | 2 | 2现在,我正在尝试从表card deck_id=2 中选择中的所有卡片,其中,表 deck_meta.中的deck_id=2
到目前为止,我知道创建这样的Select查询需要一些关系知识,所以我阅读了一对一、一对多和多对多的关系,但是不管我做了什么查询,要么抛出错误,要么没有提供期望的输出。因为我不知道还能找什么,所以我也找不到类似的问题。
发布于 2018-01-28 17:31:34
您应该将deck_meta加入到card_id列的card表中,并选择deck_id = 2所在的行。
SELECT *
FROM deck_meta AS dm
INNER JOIN card AS c ON dm.card_id = c.card_id
WHERE deck_id = 2;见演示。
如果您只需要card_name,那么将SELECT *替换为SELECT c.card_id, c.card_name。
发布于 2018-01-28 17:40:53
你可以试试这个
SELECT * FROM `card` WHERE `card_id` IN (SELECT `card_id` FROM `deck_meta` WHERE `deck_id`=2)它应该给出card中的行,card_id属于deck_id=2的deck_meta中的行。
https://stackoverflow.com/questions/48489183
复制相似问题