根据动态用户输入到postgresql中的存储过程检查多个和条件
Checking multiple and conditions based on dynamic user input to stored procedure in postgresql
我有一个 table 数据如下,
keyId att_id att_value
1 1 4
1 2 5
2 1 4
我对程序的输入是 json {"1":"4","2":"5"}
。
我的程序应该 return 我的 keyId 具有 (att_id = 1 和 att_value = 4) 和 (att_id=2 和 att_value=5).所以这个 json 输入的输出应该只有 1 而不是 2 因为 json 中的第二个键值对不满足。有什么方法可以在 postgresql 的存储过程中动态附加和条件。
假设每个 KeyId 的 att_id,att_value
组合没有重复项,您可以使用 GROUP BY
和 HAVING
SELECT KeyID
FROM t
WHERE ( att_id, att_value ) IN (SELECT inp.key :: INT,
inp.VALUE :: INT
FROM json_each_text('{"1":"4","2":"5"}') AS
inp )
GROUP BY keyId HAVING COUNT(*) = 2;
我有一个 table 数据如下,
keyId att_id att_value
1 1 4
1 2 5
2 1 4
我对程序的输入是 json {"1":"4","2":"5"}
。
我的程序应该 return 我的 keyId 具有 (att_id = 1 和 att_value = 4) 和 (att_id=2 和 att_value=5).所以这个 json 输入的输出应该只有 1 而不是 2 因为 json 中的第二个键值对不满足。有什么方法可以在 postgresql 的存储过程中动态附加和条件。
假设每个 KeyId 的 att_id,att_value
组合没有重复项,您可以使用 GROUP BY
和 HAVING
SELECT KeyID
FROM t
WHERE ( att_id, att_value ) IN (SELECT inp.key :: INT,
inp.VALUE :: INT
FROM json_each_text('{"1":"4","2":"5"}') AS
inp )
GROUP BY keyId HAVING COUNT(*) = 2;