gpt4 book ai didi

sql - SQL Server 中具有多列的“In”子句

转载 作者:行者123 更新时间:2023-12-02 07:10:42 28 4
gpt4 key购买 nike

我有一个组件,可以根据提供的键从数据库检索数据。不过,我希望我的 java 应用程序能够获取单个数据库命中中所有键的所有数据,以加快速度。当我只有一把 key 时,我可以使用 'in' 子句。

在处理多个 key 时,我可以在 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”中给出以下错误

错误:在需要条件的上下文中指定的非 bool 类型表达式,靠近“,”。

请告知他们是否有任何方法可以在 SQL Server 中实现相同的目的。

最佳答案

SQL Server 中不存在此语法。使用 AndOr 的组合。

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 服务器:

SELECT * 
FROM foo
WHERE
EXISTS (
SELECT *
FROM bar
WHERE <some conditions>
AND foo.type_code = bar.type
AND foo.CODE1 = bar.code)

根据具体情况,还有其他方法可以做到这一点,例如内部联接等。

关于sql - SQL Server 中具有多列的“In”子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194028/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com