我试图编写一个查询来选择具有用户1和用户2都执行过的步骤的行,并选择行的总次数(即,如果用户1执行了步骤1的3次,而用户2执行了1次,则该计数应显示4次。)
当我将条件设置为user_id = 1,user_id = 2时,没有错误,但是什么也没有返回,应该返回一些带有值的行。
有表格步骤,并且已采取步骤 并且表格步骤具有列ID,标题 表格step_taken具有列ID,user_id(执行步骤的用户),step_id
我想找到ID为1,2的两个用户都做了的步骤 并且还希望将count的值加起来他们执行该步骤的次数。
例如,如果用户ID 1进行了2次名为冥想的步骤, 并且用户ID 2进行了3次名为“冥想”的步骤, 我要查找的结果应如下所示;
------------------------------
title | number_of_times
------------------------------
meditation| 5
------------------------------
这是我的SQL查询
select title, count(step_taken.step_id)as number_of_times
from step join step_taken
on step.id = step_taken.step_id
where user_id = 1 and user_id=2
group by title;
它什么也不返回,但是它应该返回user1和user 2都执行的某些步骤行。
当我只用user_id = 1或user_id = 2编写相同的内容时,它会显示所选信息
如何修复我的代码,使其可以显示我想要的信息?
提前感谢:)
答案 0 :(得分:0)
user_id不能同时为1和2。您需要第二个用户表。然后按照您的条件加入并计数:
select title, count(u1.id) + count(u2.id) as number_of_times
from step u1 join step u2
on u1.id = u2.id
where u1.user_id = 1 and u2.user_id=2
group by title;
注意:无法确定表标题在里面,或者step_taken
的目的与step.id
相同。