【发布时间】:2016-05-13 15:39:11
【问题描述】:
我有一个组件可以根据提供的键从数据库中检索数据。 但是,我希望我的 java 应用程序能够获取单个数据库命中中所有键的所有数据,以加快处理速度。 当我只有一个键时,我可以使用 'in' 子句。
在处理多个键时,我可以在 oracle 中使用以下查询
SELECT * FROM <table_name>
where (value_type,CODE1) IN (('I','COMM'),('I','CORE'));
类似于写作
SELECT * FROM <table_name>
where value_type = 1 and CODE1 = 'COMM'
和
SELECT * FROM <table_name>
where value_type = 1 and CODE1 = 'CORE'
一起
但是,上面使用“in”子句的这个概念在“SQL server”中给出了以下错误
ERROR:An expression of non-boolean type specified in a context where a condition is expected, near ','.
请告知他们是否有任何方法可以在 SQL Server 中实现相同的功能。
【问题讨论】:
-
试试这个:
SELECT * FROM where value_type = 1 and CODE1 IN ( 'COMM' , 'CORE' ) -
谢谢。但实际上我正在寻找可以在两个键中处理多个值的东西。所以在实际情况下,我的第一个键值不会总是'1',可以是任何东西。并为两个键使用 IN 将搜索笛卡尔积,这不会是正确的输出。
-
您的第一个示例是一个非标准的 Oracle 扩展。如果您想要在 Oracle 以外的其他数据库上运行的 SQL,则需要单独的“AND”子句,而不是元组:docs.oracle.com/cd/E12032_01/doc/epm.921/html_techref/maxl/dml/…
-
@paulsm4 第一个示例适用于 Postgres 和 MySQL(非常肯定)。
标签: sql sql-server oracle