我有这两张表:
1. users
-id
-name
-email
-rank
2. pages
-user
-id
我需要从用户中选择所有数据并计算他写了多少页(从页面用户是用户表中用户的ID)。
你能把它变成1个复杂的查询吗?
select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id;
我不能把它变成一个复杂的查询,但这是一个简单的查询:
SELECT u.name, u.email, u.rank, u.id, count(p.id) as 'PageCount'
FROM Users u
JOIN Pages p ON
p.id = u.id
GROUP BY u.name, u.email, u.rank, u.id
是的,这样做:
select u.id, u.name, u.email, u.rank, count(p.id) as 'counter' from users u
inner join pages p on p.user = u.id
group by u.id, u.name, u.email, u.rank
您按用户信息分组并计算(计数)每个用户的页数。
这个简单的查询怎么样
SELECT user, COUNT(*) AS pages FROM page GROUP BY user
这个怎么样。
select u.id, count(p.id) as 'number_of_pages_wrote'
from users u inner join pages p
on u.id = p.id
group by u.id;
select users.id, users.name,users.email,users.rank, count(pages.id)
from users,pages
where users.id = pages.user
group by users.id
你可以这样做 -
SELECT u.*, p.count
FROM users u,
(SELECT pa.id, count(1) FROM pages pa WHERE pa.id = u.id) p
WHERE u.id = p.id
这可以通过一个JOIN
.
例如,
SELECT * FROM pages
INNER JOIN users ON (users.id=pages.user)
WHERE users.id=5
将从用户 ID 5 中选择所有页面。我会让你做剩下的事情来包含聚合函数;)