gpt4 book ai didi

sql - 如何在sql中以多行为条件进行过滤

转载 作者:行者123 更新时间:2023-12-02 09:04:09 56 4
gpt4 key购买 nike

我正在寻找一种方法来过滤两个行条件。一般来说,在基本的 sql 中,可以使用 where and or 语句来过滤查询。如果我想过滤两行怎么办。我想在下面的示例中找到属于两个组的每个患者。

如果我使用:

select *  from table
where group = group1 and group = group2

显然它不起作用。

如何查询“找到每个具有两个特定组值的患者”?在这个例子中,我正在寻找 group1group2,所以 peter 不应该匹配,尽管他在两个组中。

 Student
id | patient | group
1 | jhon | group1
2 | jack | group1
3 | jill | group2
4 | jack | group2
5 | jill | group1
6 | peter | group2
7 | peter | group3

预期输出(不需要排序):

 Student
id | patient | group
1 | jack | group1
2 | jack | group2
3 | jill | group1
4 | jill | group2

有人提到,使用“group”作为列名是不好的,这是真的。我想指出这一点,因为我不想改变这个问题。

最佳答案

IN 运算符与 count distinct 一起使用:

select * 
from student
where patient in (select patient
from student
where group_c in ('group1', 'group2')
group by patient
having count(distinct group_c) = 2)

Here is a demo for SQLServer

附言我已将 group 列的名称更改为 group_c,因为在列名称中使用关键字不是一个好习惯。

关于sql - 如何在sql中以多行为条件进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60390398/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com