首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当where子句使用另一个表中的项时,Mysqli选择查询

当where子句使用另一个表中的项时,Mysqli选择查询
EN

Stack Overflow用户
提问于 2018-01-28 17:21:11
回答 2查看 172关注 0票数 1

我有三张桌子。

card

代码语言:javascript
复制
card_id | card_name
--------------------
1       | card-1
2       | card-2
3       | card-3

deck

代码语言:javascript
复制
deck_id | deck_name
---------------------
1       | deck-1
2       | deck-2
3       | deck-3

deck_meta

代码语言:javascript
复制
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查询需要一些关系知识,所以我阅读了一对一、一对多和多对多的关系,但是不管我做了什么查询,要么抛出错误,要么没有提供期望的输出。因为我不知道还能找什么,所以我也找不到类似的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-28 17:31:34

您应该将deck_meta加入到card_id列的card表中,并选择deck_id = 2所在的行。

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2018-01-28 17:40:53

你可以试试这个

代码语言:javascript
复制
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中的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48489183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档