我有一个组件可以根据提供的键从数据库中检索数据。但是,我希望我的 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 中实现相同的目标。
原文由 Ravi Maurya 发布,翻译遵循 CC BY-SA 4.0 许可协议
SQL Server 中不存在此语法。使用
And
和Or
的组合。(在这种情况下,您可以缩短它,因为 value_type 与两种组合中的相同值进行比较。我只是想展示在 oracle 中具有多个字段的类似 IN 的模式。)
将 IN 与子查询一起使用时,您需要将其改写为:
甲骨文:
SQL 服务器:
根据具体情况,还有其他方法可以做到这一点,例如内部连接等。