Как выбрать данные из таблицы на основе других

0

У меня есть 2 таблицы T1 и T2. Здесь T1 содержит блоги, а T2 содержит список пользователей, которым понравилась запись.

Схема базы данных T1 post_id, сообщение

А ТАКЖЕ

Схема базы данных T2 post_id, user_id

Я хочу выбрать только те сообщения, которым понравилось не менее 10 пользователей.

Теги:

6 ответов

1
Лучший ответ
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
0

Вы можете использовать подзаголовок?

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
0

Вы можете группировать свой выбор, а затем использовать having

SELECT posts.*, COUNT(likes.id) as likesCount
FROM posts, likes
GROUP BY posts.id HAVING (likesCount >= 10)
0

С целью иметь максимальную производительность и избежать использования "декартово произведение" 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
0

Вы можете выбирать сообщения, используя 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;
0

В таблице T2 post_id, которая встречается более 10, является вашим желаемым сообщением, поэтому вы можете выбрать сообщения, которые имеют post_id, встречающиеся по крайней мере в 10 строк в таблице T2

  • 0
    Вы можете уточнить это с помощью запроса, пожалуйста
  • 0
    выберите post_id из группы T2 по post_id с количеством> = 10. Затем вы можете использовать post_id из этого запроса, чтобы выбрать эти сообщения из T1. Это не точный запрос, но запрос, который вы будете писать, будет несколько похож на этот ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню