我有一个用户表,其中包含以下列:user_id、teacher_id1、teacher_id2、teacher_id3
和
带有 id 的教师表
每个用户可以拥有相同的teacher_id1、teacher_id2、teacher_id3 id
我想计算有多少用户拥有同一位老师。
用户表
+----------------------------------------+
| user_Id teacher_id1 teacher_id2 teacher_id3 |
+----------------------------------------+
| 1 1 1 1 |
| 2 2 1 3 |
| 3 2 3 3 |
| 4 2 2 2 |
+----------------------------------------+
教师表
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
$id1 的计数为:2
$id2 的计数为:3
$id3 的计数为:2
我尝试过类似的方法,但它不正确!
SELECT COUNT(*) FROM users WHERE concat_ws('',teacher_id1 OR teacher_id2
OR teacher_id3) like '{$id}' ";
最佳答案
您的数据位于三个不同的列中。您需要将其合并为一列,以获得所需的不同计数。为此,您可以使用union all
。那么计数就是简单的count(distinct)
:
select teacher_id, COUNT(distinct USER_ID)
from ((select user_id, teacher_id1 as teacher_id
from t
) union all
(select user_id, teacher_id2
from t
) union all
(select user_id, teacher_id3
from t
)
) s
group by teacher_id;
关于mysql - 计算具有相同 WHERE 条件的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586848/