【问题标题】:SQL select if a certian number of WHERE clauses satisfied如果满足一定数量的 WHERE 子句,则 SQL 选择
【发布时间】:2018-01-07 11:43:15
【问题描述】:

所以我有一个带有多个 WHERE 子句的以下形式的 SQL 语句:

SELECT cols FROM table
WHERE
CONDITION1 OR
CONDITION2 OR 
...
CONDITIONN

我知道,如果我运行它,那么我将获得至少满足上述 n 条件之一的所有行。

但是现在,我想返回至少满足k 个 WHERE 条件的行。有没有办法在 SQL 中执行此操作而无需写出 WHERE 子句集的所有 n Choose k 子集?

【问题讨论】:

  • 您使用的是哪个DBMS
  • netezza sql....

标签: sql where netezza


【解决方案1】:

这是一种相当乏味的方式,但应该可以:

SELECT cols 
FROM table
WHERE 
    CASE WHEN CONDITION1 THEN 1 ELSE 0 END +
    CASE WHEN CONDITION2 THEN 1 ELSE 0 END + 
    CASE WHEN CONDITION3 THEN 1 ELSE 0 END +
    ...
    >= N
;

【讨论】:

    【解决方案2】:
    SELECT cols 
    FROM table
    WHERE 
     CASE status
       CASE WHEN CONDITION1 THEN 1
       CASE WHEN CONDITION2 THEN 1
    END
    

    http://a2znotes.blogspot.in/2012/12/control-flow-functions.html 是一个非常好的 MySQL 资源 if else, case 语句。都有例子说明。

    【讨论】:

      猜你喜欢
      • 2021-04-13
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      相关资源
      最近更新 更多