如何获取Mysql中两个表的记录数

如何获取Mysql中两个表的记录数,mysql,mysqli,Mysql,Mysqli,我有两张像下面这样的桌子 Table 1 : Id User_id rating1 rating2 rating3 1 4 4 3 5 2 4 5 2 2 3 1 5 5 5 4 4 1 2 3 Table 2 : Id User rating1 rating2 rating3

我有两张像下面这样的桌子

Table 1 : 

Id  User_id  rating1  rating2 rating3 

1     4       4         3      5 
2     4       5         2      2
3     1       5         5      5
4     4       1         2      3 


Table 2 : 

Id  User  rating1   rating2  rating3 comment 
1    1      5          2          1   okay
2    4      2          4          4   good
我想获得用户id的计数,该用户id的rating1值介于1、2、3、4、5之间,rating2值介于1、2、3、4、5之间,rating3值介于1、2、3、4、5之间

我试着用下面的方法

select count(Table1.User_id) 
from Table1
join Table2
  on Table1.User_id = Table2.User 
where Table1.rating1  = ( 1 || 2 || 3 || 4 || 5)  
  and Table2.rating1 = ( 1 || 2 || 3 || 4 || 5 )

但它不起作用。请任何人帮助我

根据您的评论,您的查询与您期望的结果相差甚远

您需要将表透视为单个列

SELECT rating, count(*)
FROM (
      SELECT `User_id` , `rating1` as rating FROM Table1
      UNION ALL
      SELECT `User_id` , `rating2` as rating FROM Table1
      UNION ALL
      SELECT `User_id` , `rating3` as rating FROM Table1
      UNION ALL
      SELECT `User`    , `rating1` as rating FROM Table2
      UNION ALL
      SELECT `User`    , `rating2` as rating FROM Table2
      UNION ALL
      SELECT `User`    , `rating3` as rating FROM Table2
   ) as combine
GROUP BY rating
ORDER BY rating

在1,2,3,4,5中使用代替=1,2,3,4,5

它将给出多个运算的误差,因为在比较一对一的值时可以使用equal

SELECT t1.user_id,t2.user,count(*) as Count_Rate
FROM 
(SELECT * FROM table1 WHERE rating1 IN ('1','2','3','4','5')) as t1
JOIN 
(SELECT * FROM table2 WHERE rating1 IN ('1','2','3','4','5')) as t2
on t1.user_id = t2.user
GROUP by user_id
或者你也可以通过添加

(SELECT *,count(rating1='1') AS rate1 FROM table1 WHERE rating1 IN ('1','2','3','4','5')) as t1

希望这有帮助

什么意思,但它不起作用?任何错误消息或意外结果?意外结果(如未找到任何记录)尝试在1,2,3,4,5 istead中使用“=1 | | 2 | | 3 | | 4 | | 5”,但它返回总体计数。我想统计一下评分1=1的用户数,就像所有5个一样,然后使用where rating1=1感谢您的回答,但它只显示总计数YK,让我再次检查。