![](/img/trans.png)
[英]SQL - Select Values From A Table Where A Corresponding Value Matches The Results Of Another Select Statement
[英]SQL efficiently select values where that value has a record in another table
有一个表users
,其字段为fbid
和fcmtoken
。 然后有一个表中的friends
,其字段为fbid
和friendfbid
。 因此,在friends
表中,要获得我所有的朋友,就必须像这样进行操作(只是为了帮助您理解这个想法):
SELECT friendfbid FROM friends WHERE fbid = MYFBID
我需要查询以获取所有朋友的fcmtokens。 我做到了,它似乎起作用:
SELECT
fbid,
fcmtoken
FROM
users
WHERE
EXISTS (
SELECT
friendfbid
FROM
friends
WHERE
fbid = ?
AND friendfbid = users.fbid
)
它足够有效吗? 似乎创建了很多选择查询,所以让我考虑了一下。
尝试移动WHERE fbid = ?
进入外部查询:
SELECT
fbid,
fcmtoken
FROM
users
WHERE fbid = ?
AND EXISTS (
SELECT
*
FROM
friends
WHERE
friendfbid = users.fbid
)
但是联接可能会更有效:
SELECT
u.fbid,
u.fcmtoken
FROM users AS u
JOIN friends AS f
ON f.friendfbid = u.fbid
WHERE f.friendfbid = ?
SELECT a.friendfbid, b.fcmtoken from friends a, users b where a.fbid = b.fbid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.