如何获取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,让我再次检查。