【问题标题】:Using a MySQL Join使用 MySQL 连接
【发布时间】:2012-08-08 19:58:28
【问题描述】:

我有一个加入,可以选择我关注的用户和好友的所有帖子

SELECT  * 
FROM    posts a 
LEFT JOIN relationships b
ON a.user_id = b.user_2 
WHERE   b.user_1 = $user_id AND 
 b.status IN (1,3,4)

如何让这个查询同时选择 a.user_id = $user_id (my id) 的所有帖子? 基本上,还选择我的所有帖子?无需复制任何数据。

【问题讨论】:

  • 你的意思是什么:“不复制任何数据。”

标签: php mysql


【解决方案1】:

我没有任何方法可以对此进行测试,但我认为以下内容会按预期工作:

SELECT  * 
FROM    posts a 
LEFT JOIN relationships b
ON a.user_id = b.user_2 
WHERE   b.user_1 = $user_id AND 
 (b.status IN (1,3,4) OR a.user_id = $user_id)

【讨论】:

    【解决方案2】:

    如果您基本上想要一张表中的 2 个查询的结果,请使用联合查询。您需要修复第二个查询中的 WHERE 子句才能正确,但是像

    SELECT  *
    FROM    posts a
    LEFT JOIN relationships b
    ON a.user_id = b.user_2
    WHERE   b.user_1 = $user_id AND
     b.status IN (1,3,4)
    UNION DISTINCT
    SELECT *
    FROM    posts a
    WHERE   a.user_id = $user_id (my id)
    

    我也会质疑您对左联接的使用 - 我认为 INNER JOIN 会更好

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2015-09-05
      • 2014-10-28
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多