mysql请教
现有三个表 user 用户表 album 相册表 photo表user 表结构
user_id //用户id
user_name; //用户名
album表结构
album_id //相册id
user_id //相册对应的用户id
photo表
photo_id //照片id
album_id //相册id
现在我想求每个用户的相册数量 该怎么写呢 这样好像不对 求大佬指教
select user.id,count(photo_id ) from user left joinalbumon user.user_id = album.user_id left join photo on album.album_id =photo.album_id
我想要的结果是
1 蔡旭坤 4(照片数量)
2 打篮球 3(照片数量)
可以把整个表的数据读出来,用代码逻辑实现所需功能。 select * from user as a
left join albuma s b on a.user_id=b.user_id
left join
(
select album_id,count(1) from photo as a
GROUP BY album_id
)c on b.album_id=c.lbum_id ibilibili 发表于 2021-4-15 19:00
可以把整个表的数据读出来,用代码逻辑实现所需功能。
楼主应该要的是表连接查询sql 你说的这种方式在数据量很大的时候非常的好 SELECT u.id,u.`name` count(p.photo_id ) as '照片数量'
from user u LEFT JOIN album a on u.id = a.user_id
LEFT JOIN photo p on p.album_id = a.id
group by u.id
看看这样是你想要的不 select * from user
left join album on user.user_id=user.user_id
left join
(
select album_id,count(1) from photo
GROUP BY album_id
)photoon album.album_id=photo.album_id 参考上面的
SELECT
u.user_id,
u.user_name,
COALESCE( SUM(p.count),0 )
FROM
USER u
LEFT JOIN album a ON u.user_id = a.user_id
LEFT JOIN ( SELECT album_id, count( album_id ) AS count FROM photo GROUP BY album_id ) p ON a.album_id = p.album_id
GROUP BY
u.user_id,
u.user_name;
页:
[1]