有一个表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 = ?