Mysql 连接多个sql表以查找公共值

Mysql 连接多个sql表以查找公共值,mysql,sql,join,Mysql,Sql,Join,我有两个sql表要连接在一起。我试图将我的第一个表“video”中的用户ID和表“review”中的posted_by连接起来,这样输出就列出了一个用户对,他们在“star”列中总是给对方“5” 我一直在研究这个声明,但没有任何结果。 表中只有两个用户符合要求:Jstark@gmail.com及cmanley@gmail.com 查询: SELECT U1.userid, U2.userid FROM video U1, video U2 WHERE U1.userid < U2.user

我有两个sql表要连接在一起。我试图将我的第一个表“video”中的用户ID和表“review”中的posted_by连接起来,这样输出就列出了一个用户对,他们在“star”列中总是给对方“5”

我一直在研究这个声明,但没有任何结果。 表中只有两个用户符合要求:Jstark@gmail.com及cmanley@gmail.com

查询:

SELECT U1.userid, U2.userid
FROM video U1, video U2
WHERE U1.userid < U2.userid   
            (SELECT COUNT(*)         
            FROM video
            WHERE userid = U1.userid) = 
             (SELECT COUNT(J.star) FROM video J, review R
             WHERE  J.userid = U1.userid AND  J.star = R.star AND R.posted_by = U2.userid AND R.star = "5") 
                            review
            (SELECT COUNT(*)         
            FROM video
            WHERE userid = U2.userid) = 
             (SELECT COUNT(J1.star
             FROM video J1, review R1
             WHERE  J1.userid = U2.userid AND  J1.star = R1.star AND R1.posted_by = U1.userid AND R1.star = "5");
审查

+--------------------------------+--------------------------+-------------+-------------------+
| video_name                     | review_comments          | review_star | posted_by         |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | cool dude                | 2           | john@gmail.com    |
+--------------------------------+--------------------------+-------------+-------------------+
| Tour of Chicago                | cool video               | 5           | Jstark@gmail.com  |
+--------------------------------+--------------------------+-------------+-------------------+
| Tour of Cape Code              | could have been better   | 3           | Megan@yahoo.com   |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | good video               | 5           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | great video              | 0           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | great video!             | 2           | don@yahoo.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of Lake Erie       | i really didnt like this | 0           | cmanley@gmail.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | it was terrible          | 0           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | Nice van                 | 4           | Hhinata@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | nice video               | 5           | test@yahoo.com    |
+--------------------------------+--------------------------+-------------+-------------------+
| Sacramento Forest              | okay video               | 3           | atticus@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Scenic Downtown Cincinatti     | terrible video           | 0           | Michael@aol.com   |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Orlando          | wonderful video          | 5           | Hhinata@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+

为了解决这个问题,我将从一些基本的问题开始,并努力找到问题的答案

首先,通过加入来整理视频和评论

SELECT v.video_name, AVG(review_star)
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.video_name
然后我们可以看看评论员的平均星级:

SELECT r.posted_by, AVG(review_star)
FROM review r
GROUP BY r.posted_by
更进一步,按海报/评论对分组:

SELECT v.userid, r.posted_by, AVG(review_star)
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.userid, r.posted_by
拥有
允许对此进行后期筛选。所有五星评级的平均值为5

SELECT v.userid, r.posted_by, AVG(review_star) as avg
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.userid, r.posted_by
HAVING avg = 5

请以表格文本(或DDL/DML语句)的形式提供两个表的示例数据,以及您的预期结果。这些微小的图像很难读取,无法轻松转换为可用于测试的内容。请编辑这些表。谢谢
SELECT v.userid, r.posted_by, AVG(review_star) as avg
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.userid, r.posted_by
HAVING avg = 5