sql语句有什么问题

时间:2014-04-28 11:47:49

标签: mysql

我想列出满足特定条件的特定表格中的所有数据。 例如,名为' jobs'这是与名为' user'。

的表的内部联接
    SELECT jobs.*,user.* , COUNT( jobs.user_id ) as posted_job 
    FROM jobs
    INNER JOIN user ON user.id = jobs.user_id
    WHERE jobs.user_id =2
    GROUP BY jobs.user_id

我想列出所有特定记录,但是从上面的语句中它只显示一条记录。实际上我有三条记录,其中jobs.user_id = 2.

2 个答案:

答案 0 :(得分:1)

尝试以下查询:

SELECT j.user_id , COUNT( j.user_id ) as posted_job 
    FROM jobs as j
    JOIN user as u ON u.id = j.user_id
    WHERE j.user_id =2
    GROUP BY j.user_id

如果希望所有用户都计算在内,请尝试以下操作:

SELECT j.user_id , COUNT( j.user_id ) as posted_job 
    FROM jobs as j
    JOIN user as u ON u.id = j.user_id
    GROUP BY j.user_id

如果您想获得列表以及计数,请尝试以下内容:

SELECT 
j.*,u.posted_job 
FROM jobs AS j
JOIN
(SELECT j.user_id , COUNT( j.user_id ) AS posted_job 
    FROM jobs AS j
    JOIN USER AS u ON u.id = j.user_id
    WHERE j.user_id =2
    GROUP BY j.user_id) AS u
ON u.user_id=j.user_id 
WHERE j.user_id=2;

答案 1 :(得分:0)

问题是你正在做COUNT( jobs.user_id )并且使用count会将结果集限制为sigle查询中的一行

由于您正在对单个user_id进行查询,因此此处的计数没有意义,在这种情况下,总行数将是计数。

所以你可能需要这样做

SELECT jobs.*,user.* 
FROM jobs
INNER JOIN user ON user.id = jobs.user_id
WHERE jobs.user_id =2

DEMO

当您想查看案例中所有用户的数据时,使用聚合函数或计数是合适的,以下

SELECT jobs.*,user.*,count(jobs.user_id) as total 
FROM jobs
INNER JOIN user ON user.id = jobs.user_id
group by jobs.user_id

将列出每个用户的作业数