多列多值组合场景下SQL查询语句的程序化简化算法需求
多列值组合的SQL查询简化方法需求
假设需要从数据库表中基于两列或多列查询数据,且必须覆盖这些列的指定值组合。
示例输入值组合
A 1 A 2 A 3 A 4 B 2 B 3 B 4 C 2 C 3 C 4 C 5
现有两种生成方式的问题
直接枚举所有组合:
生成的SQL语句如下,虽然准确但冗余度极高:...WHERE column1=A AND column2=1 OR column1=A AND column2=2 OR ...按单列分组使用IN:
按某一列分组后用IN子句优化,比直接枚举简洁,但当值列表较大时仍显冗长:...WHERE column1=A AND column2 IN (1,2,3,4) OR column1=B AND column2 IN (2,3,4) OR column1=C AND column2 IN (2,3,4,5)
期望的优化方向
寻求一种程序化/算法化的方法,将查询语句简化为更紧凑的形式,例如:
...WHERE column1 IN (A,B,C) AND column2 IN (2,3,4,5) AND NOT (column1=A AND column2=5) OR column1=A AND column2=1
核心目标是尽量减少值的输出次数,且该方法需能推广至多列场景,无需追求完美优化,达到较好简化效果即可。
内容的提问来源于stack exchange,提问作者rybai
相关产品推荐
相关产品推荐

