我有一个根据提供的键从数据库检索数据的组件。
不过,我希望我的 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'
and
SELECT * FROM <table_name>
where value_type = 1 and CODE1 = 'CORE'
together
但是,如上所述使用“in”子句的概念在“SQL server”中给出以下错误
ERROR:An expression of non-boolean type specified in a context where a condition is expected, near ','.
请告知他们是否有任何方法可以在 SQL Server 中实现相同的目的。
SQL Server 中不存在此语法。使用组合And
and Or
.
SELECT *
FROM <table_name>
WHERE
(value_type = 1 and CODE1 = 'COMM')
OR (value_type = 1 and CODE1 = 'CORE')
(在这种情况下,您可以使其更短,因为 value_type 与两种组合中的相同值进行比较。我只是想展示像 Oracle 中具有多个字段的 IN 一样工作的模式。)
当将 IN 与子查询一起使用时,您需要将其改写如下:
Oracle:
SELECT *
FROM foo
WHERE
(value_type, CODE1) IN (
SELECT type, code
FROM bar
WHERE <some conditions>)
SQL服务器:
SELECT *
FROM foo
WHERE
EXISTS (
SELECT *
FROM bar
WHERE <some conditions>
AND foo.type_code = bar.type
AND foo.CODE1 = bar.code)
根据具体情况,还有其他方法可以做到这一点,例如内部联接等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)