如何使用以编程方式包含多个列的Whore in-In子句进行postgresql查询?[英] How to do a PostgreSQL query with where-in clause which contains multiple columns programmatically?

本文是小编为大家收集整理的关于如何使用以编程方式包含多个列的Whore in-In子句进行postgresql查询?的处理方法,想解了如何使用以编程方式包含多个列的Whore in-In子句进行postgresql查询?的问题怎么解决?如何使用以编程方式包含多个列的Whore in-In子句进行postgresql查询?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我的查询就是这样:

select * from plat_customs_complex
where (code_t,code_s) 
in (('01013090','10'),('01029010','90'));

它在PSQL控制台中运行良好.我的问题是如何在客户端代码中执行此查询.(通过C#或Java)

我已经知道以下代码效果很好(C#):

string[] codeT = new string[]{"01013090","01029010"};    
connection.Query("SELECT * FROM plat_customs_complex WHERE code_t=ANY(@CodeT)",
new { CodeT = codeT });

推荐答案

最后,我发现unnest函数可以提供帮助.

纯SQL就是这样:

select * from plat_customs_complex
where (code_t,code_s) = ANY(select * from unnest(ARRAY['01013090','01029010'],ARRAY['10','90']))

可以轻松地将其转换为C#代码:

string[] codeTs = new string[]{"01013090","01029010"}; 
string[] codeSs = new string[]{"10", "90"};
connection.Query("select * from plat_customs_complex
where (code_t,code_s) = ANY(select * from unnest(@CodeTs, @CodeSs))", 
new {CodeTs=codeTs, CodeSs=codeSs});

本文地址:https://www.itbaoku.cn/post/1764055.html