在某些情况下如何选择特定的行

时间:2019-05-02 02:10:06

标签: mysql

我试图编写一个查询来选择具有用户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编写相同的内容时,它会显示所选信息

如何修复我的代码,使其可以显示我想要的信息?

提前感谢:)

1 个答案:

答案 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相同。