具有多列的SQL Server中的“In”子句
发布时间:2020-12-12 06:38:16 所属栏目:MsSql教程 来源:网络整理
导读:我有一个组件,它根据提供的密钥从数据库中检索数据. 但是我希望我的 java应用程序能够获取单个数据库中所有键的所有数据,以便加快操作. 当我只有一个键时,我可以使用’in’子句. 在处理多个密钥时,我可以在oracle中使用以下查询 SELECT * FROM table_name whe
我有一个组件,它根据提供的密钥从数据库中检索数据.
但是我希望我的 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’中给出了以下错误 错误:在预期条件的上下文中指定的非布尔类型的表达式,靠近’,’. 请告诉我们是否有任何方法可以在SQL Server中实现相同的功能. 解决方法SQL Server中不存在此语法.使用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与子查询一起使用时,需要将其改为: 甲骨文: SELECT * FROM foo WHERE (value_type,CODE1) IN ( SELECT type,code FROM bar WHERE <some conditions>) SQL Server: SELECT * FROM foo WHERE EXISTS ( SELECT * FROM bar WHERE <some conditions> AND foo.type_code = bar.type AND foo.CODE1 = bar.code) 还有其他方法可以做,具体取决于案例,如内连接等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |