使用SQL子查询或JOIN子句进行选择

时间:2014-05-09 16:06:57

标签: mysql sql

所以我有这些表格。

此表存储喜欢:

Table Name: Action

Id   Creator   Type   Target     <--- The `Target` here is the `Id` in Posts
1    1         like   1
2    2         like   1
3    3         like   1
4    1         like   2

此表存储帖子:

Id   Creator
1    1
2    2

任何表格中的列名Creator都是指Id表格中的Account列(此处未显示)。

我想选择已经提供给帐户帖子的喜欢总数。 我已经尝试了下面的查询,但它给出了语法错误。

SELECT count(`Id`) AS Check FROM `Action` WHERE `Type`='like' AND `Target`= (SELECT `Id` FROM `Posts` WHERE `Creator` = '1');

我不确定JOIN子句在这里是否更合适。

2 个答案:

答案 0 :(得分:1)

您将获得两个表和GROUP BY的连接并计算相应目标的总和。

SELECT
    p.creator,      
    COUNT(a.target) 
FROM
    posts p
INNER JOIN
    Action a
ON
    a.target = p.id
WHERE
    a.Type = 'like' AND p.creator = 1
GROUP BY
    p.creator;

答案 1 :(得分:0)

这是SQL



    select a.ID,a.Creator,a.Type,a.Target, Count(p.*)Total
    from Action a 
    join posts p on a.Target=p.Creator
    where 
    a.Type='like'
    and a.Target=1;