У меня есть 2 таблицы T1 и T2. Здесь T1 содержит блоги, а T2 содержит список пользователей, которым понравилась запись.
Схема базы данных T1 post_id, сообщение
А ТАКЖЕ
Схема базы данных T2 post_id, user_id
Я хочу выбрать только те сообщения, которым понравилось не менее 10 пользователей.
SELECT T1.post_id, T1.post, COUNT(T2.user_id]) as Total
FROM T1 JOIN T2 ON T1.post_id = T2.post_id
GROUP BY T1.post_id, T1.post
HAVING Total >= 10
Вы можете использовать подзаголовок?
SELECT post_id,COUNT(post_id) AS count,
(SELECT post FROM T1 where post_id=T2.post_id) AS post
GROUP BY post_id
HAVING count >= 10
Вы можете группировать свой выбор, а затем использовать having
SELECT posts.*, COUNT(likes.id) as likesCount
FROM posts, likes
GROUP BY posts.id HAVING (likesCount >= 10)
С целью иметь максимальную производительность и избежать использования "декартово произведение" join
, как это:
SELECT p.post_id, COUNT(l.user_id) AS TotalLikesCount
FROM posts AS p
JOIN likes AS l ON p.post_id = l.post_id
GROUP BY p.post_id
HAVING TotalLikesCount >= 10
Вы можете выбирать сообщения, используя join.
SELECT p.post_id, p.post, count(pl.user_id) as likes
FROM 'post' as p
join post_likes as pl on p.post_id = pl.post_id
where 1 group by pl.post_id
having likes >= 10;
В таблице T2 post_id, которая встречается более 10, является вашим желаемым сообщением, поэтому вы можете выбрать сообщения, которые имеют post_id, встречающиеся по крайней мере в 10 строк в таблице T2