【问题标题】:Select from one table based on another tables values根据另一个表的值从一个表中选择
【发布时间】:2016-07-16 18:17:53
【问题描述】:

我有一个问题,是否可以根据同一查询中的另一个表值从一个表中进行选择。在我的情况下,我有两个名为 followscore 的表。

关注

------------------------
| follower | following |
------------------------
| Uname2   | Uname1    |
------------------------

分数

--------------------
| username | score |
--------------------
| Uname1   |   1   |
--------------------
| Uname1   |   2   |
--------------------

我试图帮助的是首先获取用户关注的人,然后获取该用户的总分。我尝试过内部连接等,但无法正常工作。

查询

"SELECT follow.following, score.SUM('score') FROM follow INNER JOIN score ON follow.following=score.username WHERE follow.follower='Uname2'";

【问题讨论】:

    标签: php mysql sql mysqli


    【解决方案1】:

    要获得一条记录,请使用:

    SELECT
      f.following,
      SUM(s.score) as score
    FROM
      Follow f, Score s
    WHERE
      f.following = s.username
      AND f.follower = 'Uname2'
    

    要获得每次尝试的总和:

    SELECT
      f.follower,
      f.following,
      SUM(s.score) as score
    FROM
      Follow f, Score s
    WHERE
      f.following = s.username
    GROUP BY f.follower
    

    这是一个Fiddle 示例。

    【讨论】:

    • 谢谢我现在可以得到一个用户结果!如何更改查询,以便打印出每个用户和特定用户所关注的分数?
    • 可能类似于SELECT s.username, f.follower, SUM(s.score) as score FROM Follow f, Score s WHERE f.following = s.username GROUP BY s.username?。这是Fiddle 示例。
    【解决方案2】:

    您可能需要在此处包含GROUP BY 子句,在查询末尾添加GROUP BY follow.following

    【讨论】:

      【解决方案3】:

      像这样使用 GROUP BY。希望它会有所帮助。

      SELECT follow.following, score.SUM('score') FROM follow INNER JOIN score ON follow.following=score.username WHERE follow.follower='Uname2' GROUP BY follow.following
      

      【讨论】:

      • 我尝试过使用 group by,但这也不起作用。
      • 试试这个。选择 a.following, sum(b.score) from follow a inner join on score b where b.username=a.following group by a.following
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2014-10-25
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多