gpt4 book ai didi

php - 带有 INNER JOIN 的 MySQL SELECT 2 表

转载 作者:行者123 更新时间:2023-12-01 00:28:23 25 4
gpt4 key购买 nike

我一直在研究一些 MySQL 联接,但这个让我有点困惑。我有 3 个表,friendspostsactivity

postsactivity 都有一个字段 userid 代表记录所属的用户。 friends 包含字段 useridfriendid 表示两个用户是 friend 。

如果可能的话,我想设计一个查询,该查询将显示来自与登录用户是 friend 的用户的 postsactivity 中的记录。

我尝试了以下查询:

SELECT p.*, a.*
FROM posts AS p, activity AS a
INNER JOIN friends f ON (p.userid = f.friendid)
WHERE f.userid = '(Logged In User ID)'

但是,当我运行上述查询时,出现以下错误:

“on 子句”中的未知列“p.userid”

任何帮助将不胜感激:)

最佳答案

您可能需要一个UNION。如果 postsactivity 这两个表具有相同的列数(顺序相同且类型相似),则以下内容将起作用。如果不是,则需要在 SELECT 列表中进行一些调整:

SELECT p.*
FROM posts AS p
INNER JOIN friends f ON p.userid = f.friendid
WHERE f.userid = '(Logged In User ID)'
UNION ALL
SELECT a.*
FROM activity AS a
INNER JOIN friends f ON a.userid = f.friendid
WHERE f.userid = '(Logged In User ID)'

如果两个表有不同的字段,那么你应该调整2个选择列表,像这样:

SELECT p.id
, p.userid
, p.post_text AS text
, p.post_date AS date
, NULL AS action
FROM posts AS p
...
UNION ALL
SELECT a.id
, a.userid
, NULL AS text
, a.activity_date AS date
, a.action AS action
FROM activity AS a
...

关于php - 带有 INNER JOIN 的 MySQL SELECT 2 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832127/

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