【发布时间】:2022-01-21 12:45:57
【问题描述】:
我有这样的桌子:
ID | key | value
1 | A1 |o1
1 | A2 |o2
1 | A3 |o3
2 | A1 |o4
2 | A2 |o5
3 | A1 |o6
3 | A3 |o7
4 | A3 |o8
我想编写一个可以根据键列过滤值列的 oracle 查询。 像这样的东西
select ID
where
if key = A1 then value ='o1'
and key = A3 then value ='o4'
请帮我写这个查询。
***为了澄清我的问题,我需要 ID 列表以确保所有条件(键值)对它们都为真。对于每个 ID,我应该检查键值(使用 AND ),如果所有条件都为真,那么这个 ID 是可以接受的。
谢谢
【问题讨论】:
-
该表是否已经有
value列,您能否通过将所需查询的每个案例和条件分开来更好地解释? -
这个问题并不完全清楚。如果键既不是 A1 也不是 A3 怎么办 - 例如,如果键是 A2 或 null 怎么办?您是否希望排除所有这些行(换句话说:您是否只想要键为 A1 或 A3 的行,而不需要其他行)?如果是这样,那就这么说吧。如果不是这样,那么你需要解释更多。
-
为了澄清我的问题,我需要 ID 列表以确保所有条件(键值)对它们都是正确的。对于每个 ID,我应该检查键值(使用 AND ),如果所有条件都为真,那么这个 ID 是可接受的。 @BarbarosÖzhan
-
嗨。同时,您最好编辑问题以澄清它。
-
你的解释没有任何意义。您想要满足某些条件的“所有 id”(无论该条件是什么),但无论其他条件如何,您的
where子句中已经有 ID=1。因此,如果任何其他 ID 满足您的“键、值”条件,则它不会是“可接受的”,因为它不满足 ID=1。对不起,但我继续前进。祝你好运!