你如何在 MYSQL 外键中获取数据?

how do you fetch data in MYSQL foreign key?

   user
---------------------------
userid        name 
---------------------------
1             ...
2             ...
3             ...


item
---------------------------
itemid        category
---------------------------
1             ...
2             ...
3             ...


request
---------------------------
requestid   itemid        userid
---------------------------
1             ...         ...
2             ...         ...
3             ...         ...

我想获取项目 table 中与特定用户

请求 table 中的类别相同的所有类别

示例用户请求类别为“数学”的项目,我想获取项目 table 中类别为“数学”的所有项目

您可以通过连接来做到这一点:

select i1.*
from request r 
inner join item i on r.itemid = i.itemid
inner join item i1 on i1.category = i.category
where r.userid = ?

逻辑是select给定用户id的所有请求,并带上相应的物品。然后您可以再次加入属于同一类别的项目。

根据您的数据,这可能会产生重复项。如果是这样,exists 可能更合适:

select i1.*
from item i1
where exists (
    select 1
    from request r 
    inner join item i on r.itemid = i.itemid
    where r.userid = ? and i.category = i1.category
)