MySql:加入两个简单的表

时间:2012-02-23 17:19:59

标签: mysql select join

我的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”登录该站点。

我希望看到我关注的人们最近提出的问题。在这种情况下,只有来自“彼得”的问题。

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

我知道MySql的基础知识,但我对MySql JOIN一无所知。 (< - 我想我需要加入来实现我的目标。)

我的问题:那我怎么能在PHP脚本中这样做呢?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

对数据库进行记录过滤效率更高,而不是将所有记录转储并在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' )

(在您的问题范围之外,但您可能想要在表格中添加某种类型的唯一索引,因此如果您想删除某个特定问题或者想要删除您正在关注的人,那么请继续可以通过删除索引来实现,而不必指定字段组合来获取您的唯一记录。)

答案 2 :(得分:0)

- 使用USING子句的内部联接 选择 * 从内部加入b USING()

- 带ON子句的内连接 选择 * 从内部加入b 在一个。 = b。

尝试这种方式:)