【问题标题】:MySql: Joining two simple tablesMySql:连接两个简单的表
【发布时间】:2012-02-23 17:19:58
【问题描述】:

我的 MySql 数据库中有两个表:

table #1: follows

  follower  |  following
 ------------------------
  john      |  dan
 ------------------------
  peter     |  john
 ------------------------
  peter     |  dan
 ------------------------
  john      |  peter
 ------------------------
  dan       |  peter
 ------------------------

 table #2: questions

  text           |  username
 ----------------------------
  something      |  peter
 ----------------------------
  something1     |  dan
 ----------------------------
  something2     |  peter
 ----------------------------
  something3     |  john

假设我使用用户名“dan”登录到该站点。

我想查看我关注的人最近提出的问题。在这种情况下,只有“彼得”的问题。

“follows”表包含某人记录的所有关注,“questions”表包含所有问题。

我知道 MySql 基础知识,但我对 MySql JOIN 一无所知。 (

我的问题:那么我如何在 PHP 脚本中做到这一点?

【问题讨论】:

    标签: mysql select join


    【解决方案1】:
    SELECT q.username, q.text
        FROM follows f
            INNER JOIN questions q
                ON f.following = q.username
        WHERE f.follower = 'dan'
    

    【讨论】:

    • 啊...谢谢乔!这是工作! ;) 我想问一个问题:它是如何工作的?我是 MySql JOIN 的初学者,所以如果我想稍后修改脚本,我不知道该怎么做!那么你能简要解释一下里面是什么吗?谢谢... :)
    【解决方案2】:

    在数据库上进行记录过滤比将所有记录转储并在 PHP 脚本中执行更有效。您的查询可以通过 JOIN 来完成:

    SELECT q.* 
    FROM questions q 
    JOIN follows f ON f.following = q.username 
    WHERE f.follower = 'dan'
    

    或通过子查询

    SELECT q.* 
    FROM questions q 
    WHERE q.username IN ( SELECT f.following
                          FROM follows f
                          WHERE f.follower = 'dan' )
    

    (在您的问题范围之外,但您可能希望在表格中添加某种类型的唯一索引,因此如果您想删除特定问题或摆脱您关注的人,您可以继续可以通过删除索引来做到这一点,而不必指定字段组合来获取您的唯一记录。)

    【讨论】:

      【解决方案3】:

      -- 使用 USING 子句的内连接 选择 * 从一个内部连接 ​​b 使用()

      -- 带 ON 子句的内连接 选择 * 从一个内部连接 ​​b 开= b。

      这样试试:)

      【讨论】:

        猜你喜欢
        • 2021-11-18
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多