Man*_*y_G 2 sql postgresql where-clause
如果我有一个 table( widgets),其中包含布尔列,如is_blue、 和is_hard以及一些字符串列,如region和kind。
我可以执行如下查询来获取与所有条件匹配的行
select * from widgets
where is_hard = true
and is_blue = false
and region = 'NYC'
and kind = 'Deluxe';
Run Code Online (Sandbox Code Playgroud)
如果我还想找到满足 3/4 条件或 2/4 等等的小部件。我可以在一个查询中使用 SQL 执行此操作吗?或者我是否必须在代码中迭代,进行越来越不具体的查询?我最熟悉的是 Postgres 和 Ruby。
您可以使用以下查询。示例查询将返回满足 3/4 条件的结果。
SELECT *
FROM widgets
WHERE 3 = (CASE WHEN is_hard = true THEN 1 ELSE 0 END)
+ (CASE WHEN is_blue = false THEN 1 ELSE 0 END)
+ (CASE WHEN region = 'NYC' THEN 1 ELSE 0 END)
+ (CASE WHEN kind = 'Deluxe' THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |