SQL 选择具有特定值的不同 ID

Posted

技术标签:

【中文标题】SQL 选择具有特定值的不同 ID【英文标题】:SQL selecting distinct Ids with specific values 【发布时间】:2021-01-30 18:29:05 【问题描述】:

您能否告诉我如何使用 FormFieldID ((1 AND 2) OR 3) 查找用户,因此 SQL 查询应返回 UserID:7、8、9。

桌子:

我使用 SQL Server。

谢谢!

【问题讨论】:

【参考方案1】:

我会推荐聚合和having 子句来实现过滤logc:

select userid
from mytable
group by userid
having 
    (
         max(case when formfieldid = 1 then 1 end) = 1 
         and max(case when formfieldid = 2 then 1 end) = 1
    )
    or max(case when formfieldid = 3 then 1 end) = 1

根据您没有告诉的实际数据库,可能有更简洁的选项来表达条件。例如,在 mysql 中:

having 
    (max(formfieldid = 1) and max(formfieldid = 2))
    or max(formfieldid = 3)

【讨论】:

以上是关于SQL 选择具有特定值的不同 ID的主要内容,如果未能解决你的问题,请参考以下文章

sql查询以选择两列中具有相同id但不同值的记录

我需要从 sql 中选择具有不同值的列

SQL - 选择最大具有不同值的重复项

从每个 id 具有特定值的表中选择行

SQL 选择以消除在下一列中具有 2 个其他值的重复值

访问具有相同 ID 但在其他 2 列中具有不同值的选择行