你如何在 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
)
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
)