Law*_*las 2 sql database postgresql
我正在尝试编写一个类似这样的查询:
SELECT * FROM table WHERE
(a, b) in ((23, [1]), (20, [0]), (17, [-1, 0, 1]), (55, [-1, 0]);
Run Code Online (Sandbox Code Playgroud)
结果集将是(假设项目存在!):
23, 1
20, 0
17, -1 (could have also been 17, 0 or 17,1)
55, -1 (could have also been 55, 0)
Run Code Online (Sandbox Code Playgroud)
也就是说,设置项类似于OR子句."我们坚持认为(a,b)包括(23,1)和(20,0),但17可以是-1,0或1." 那有意义吗?
这样的事情可能吗?
你可以使用= ANY:
WITH cte(i, list) AS (
VALUES (23, ARRAY[1]),(20, ARRAY[0]),(17, ARRAY[-1,0,1]), (55, ARRAY[-1, 0])
)
SELECT t.*
FROM tab t
JOIN cte c ON t.a = c.i AND t.b = ANY(list);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35 次 |
| 最近记录: |