我想知道是否有一种方法可以检查当前在子选择中是否可以找到数组中的每个项目。我有以下查询:
SELECT *
FROM similarity_values
WHERE assemblies[1] IN
(
SELECT 200)
OR assemblies[2] IN
(
SELECT 200)
我正在寻找一个删除OR的方法,而我们只是一个子选择。类似于:
SELECT * FROM similarity_values WHERE assemblies[*] IN (SELECT 200)
2注:
谢谢, 伊甸园
答案 0 :(得分:4)
您可以将子选择的结果转换为数组,然后使用“重叠”或“包含”运算符
<configuration>
<configSections>
</configSections>
<appSettings>
<add key="IDServizio" value="2" />
<add key="IDServizio.DataSet" value="10" />
<add key="IDServizio.Array" value="11" />
</appSettings>
<connectionStrings>
<add name="DBConnString" connectionString="Data Source=xxxx;Initial Catalog=xxxx;Persist Security Info=True;User ID=xxx;Password=xxx;Connect Timeout=50000"/>
</connectionStrings>
<system.web>
...
</configuration>
或
where assemblies @> array(select ...)
两者之间的区别是右侧数组(子选择的结果)返回多个值时的处理方式。 where assemblies && array(select ...)
仅当子选择中的所有值都包含在@>
中时才为true。如果找到至少一个值,则assemblies
将为true。
如果子选择总是返回准确一行一行,您可以执行以下操作:
&&
答案 1 :(得分:0)
尝试unnest:
init_api