gpt4 book ai didi

php - 加入作为多个 OR 的替代方案

转载 作者:行者123 更新时间:2023-11-30 21:23:54 24 4
gpt4 key购买 nike

我有两个具有以下结构的表:

table name: friends
uid (PK)(FK)
friend_id (PK)(FK)

table name: posts
post_id (AI)(PK)
post_text
uid (FK) //poster id

我想选择仅由用户 x 的 friend 发布的帖子。我最初的计划是使用以下代码:


SELECT posts.post_text INNER JOIN friends ON posts.uid = friends.friend_id
WHERE friends.uid = x

但是,这似乎行不通。 (我得到了 x 完成的所有帖子,完成了 X 的 friend 完成的所有帖子。我能想到的唯一选择是使用(可能很长的)OR 字符串 - 如

WHERE posts.uid = 'friend_id_1' OR posts.uid = 'friend_id_2' ect..

任何替代解决方案?谢谢。

最佳答案

SELECT  posts.*
FROM friends
JOIN posts
ON posts.uid = friends.friend_id
WHERE friends.uid = 'x'

这个查询应该有效,所以你最好检查你的数据。

你不是偶尔做X吗?他自己的 friend ?

如果你们的友谊关系是对称的,我。 e.如果XY的 friend , 然后 YX的 friend ,那么你应该将表格制作成这样:

friends (a, b, PRIMARY KEY (a, b), KEY (b))

SELECT posts.*
FROM (
SELECT b AS friend_id
FROM friends
WHERE a = 'X'
UNION ALL
SELECT a AS friend_id
FROM friends
WHERE b = 'X'
) friends
JOIN posts
ON posts.uid = friends.friend_id

在插入一对 friend 之前,总是这样安排 A < B , 我。 e.最少的用户user_id进入 A .

关于php - 加入作为多个 OR 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com