mysql SQL:选择测试变量A和B中的用户

jxct1oxe  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(159)

我希望你能帮我写一个表X的SQL查询。
我有一个表,每个时间戳都有行,填充了User_ID,以及它们是否在a/b测试的变体A或B中。
我想选择所有的User_ID的,其中在A和B.在这个表的例子,将只给我给予User_ID 4.
接下来,我想删除A=1的这些User_ID的行,因此只剩下B=1。
谁知道怎么写这个?
| 时间戳|用户ID|变体A中|变体_B中|
| --|--|--|--|
| 2023年10月10日| 1 | 0 | 1 |
| 2023年11月10日| 2 | 1 | 0 |
| 2023年12月10日| 3 | 1 | 0 |
| 2023年10月13日| 4 | 1 | 0 |
| 2023年10月14日| 4 | 0 | 1 |
| 2023年10月15日| 5 | 1 | 0 |
| 2023年10月16日| 6 | 1 | 0 |
| 2023年10月17日| 7 | 0 | 1 |
| 2023年10月18日| 7 | 0 | 1 |
| 2023年10月19日| 8 | 1 | 0 |
我尝试使用where语句来表示A=1和B=1,但结果是0条记录

baubqpgj

baubqpgj1#

另一个简单的解决方案是使用具有匹配id的子查询,并仅删除匹配id的In_variant_B <> 1的记录。
要识别A和B中的所有User_ID,

select User_ID 
from yourtable y
group by User_ID 
having max(In_variant_A) = 1 and max(In_variant_B) = 1;

字符串
删除查询

delete y.* 
from yourtable y
inner join (select User_ID 
            from yourtable y
            group by User_ID 
            having max(In_variant_A) = 1 and max(In_variant_B) = 1 
            ) id_to_del on id_to_del.User_ID=y.User_ID
where In_variant_B <> 1;


See example

相关问题