MySQL多对多表:获取结果数
我有一个由三个表组成的数据库:MySQL多对多表:获取结果数,mysql,Mysql,我有一个由三个表组成的数据库:用户照片喜欢基本轮廓如下: USERS: user_id name PHOTOS: photo_id title url user_id LIKES: user_id photo_id 我想做的是让一个用户喜欢很多照片,并且有很多用户喜欢的照片 显然,我想按喜欢的数量来订购这些照片,这可以通过JOIN和COUNT() 我需要做的是返回每张照片上的“喜欢”的数量,但我不知道。我该怎么做 我目前的SQL是: SELECT photos.photo_id,
用户
照片
喜欢
基本轮廓如下:
USERS:
user_id
name
PHOTOS:
photo_id
title
url
user_id
LIKES:
user_id
photo_id
我想做的是让一个用户喜欢很多照片,并且有很多用户喜欢的照片
显然,我想按喜欢的数量来订购这些照片,这可以通过JOIN
和COUNT()
我需要做的是返回每张照片上的“喜欢”的数量,但我不知道。我该怎么做
我目前的SQL是:
SELECT
photos.photo_id,
photos.title,
photos.url,
users.name
FROM photos
LEFT OUTER JOIN users
ON users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id
ORDER BY COUNT(*) DESC
LIMIT 20
只需将COUNT(*)
添加到您的选择列表:
SELECT
photos.photo_id,
photos.title,
photos.url,
users.name,
COUNT(*)
FROM photos
LEFT OUTER JOIN users
ON users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id
ORDER BY COUNT(*) DESC
LIMIT 20
只需将COUNT(*)
添加到您的选择列表:
SELECT
photos.photo_id,
photos.title,
photos.url,
users.name,
COUNT(*)
FROM photos
LEFT OUTER JOIN users
ON users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id
ORDER BY COUNT(*) DESC
LIMIT 20
试试这个
SELECT
photos.photo_id,
photos.title,
photos.url,
users.name,
COUNT(*) AS COUNT
FROM photos, users
WHERE users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id ORDER BY COUNT(likes.photo_id) DESC
试试这个
SELECT
photos.photo_id,
photos.title,
photos.url,
users.name,
COUNT(*) AS COUNT
FROM photos, users
WHERE users.user_id = photos.user_id
LEFT OUTER JOIN likes
ON likes.photo_id = photos.photo_id
GROUP BY likes.photo_id ORDER BY COUNT(likes.photo_id) DESC
只需将
COUNT(*)
添加到您的选择列表中即可?facepalm这是其中的一天。。。你可能应该把它作为答案贴出来!只需将COUNT(*)
添加到您的选择列表中即可?facepalm这是其中的一天。。。你可能应该把它作为答案贴出来!虽然有一个轻微的错误,但这是我在帖子中的错误,因此我将在帖子中修复它,并在这个答案中为您修复它!虽然有一个轻微的错误,但这是我在帖子中的错误,因此我将在帖子中修复它,并在这个答案中为您修复它!