标签: sql-in

在SQL语句中使用'IN'和子查询

在我们可以使用JOIN的地方使用SQL语句中的"IN"关键字是否存在任何性能问题?

SELECT xxx
FROM xxx
WHERE ID IN (SELECT Id FROM xxx)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-in

7
推荐指数
1
解决办法
312
查看次数

SQL IN子句,保证评估为false

我可以在SQL IN子句中放置任何值来保证该子句的计算结果为false吗?

SELECT *
FROM Products
WHERE ProductID IN (???)
Run Code Online (Sandbox Code Playgroud)

有什么我可以替换??? 保证不会返回任何行?

sql sql-server sql-in

7
推荐指数
1
解决办法
139
查看次数

Node.js sqlite3 IN运算符

所以我目前正在尝试在Node.js中进行查询:

// friends is an array object
db.all('SELECT email ' +
       'FROM users' +
       'WHERE email in ?', friends, function(err, rows) {
           if (!err) {
Run Code Online (Sandbox Code Playgroud)

我知道你可以为每个'?'传递一系列参数 符号,但在这种情况下是否可以使用IN运算符?如果没有,我应该进行字符串连接还是准备好的语句?

sqlite sql-in node.js

7
推荐指数
1
解决办法
1299
查看次数

使用“IN”命令将数组作为参数传递给 SQL 查询

大家下午好,

我有一个关于 SQL 查询的问题。是否可以使用数组作为使用“IN”命令的查询的参数?

例如,

int x = {2,3,4,5}

UPDATE 'table_name' set 'field' = 数据 WHERE field_ID IN (x)

我问这个问题的原因是为了避免当我必须更新数据库中的数据时使用迭代 SQL 语句。我还考虑过在 UPDATE 查询中使用 for every 语句,但我不知道如果更新 100 多条记录,它会减慢系统速度,是否会影响查询的性能。

顺便说一句,我正在使用 VB.Net。我的数据库是 MySQL Workbench。

mysql sql vb.net sql-in

6
推荐指数
1
解决办法
1万
查看次数

在 PostgreSQL 中将 CTE 与 IN 结合起来

所以我在 PostgreSQL 10 中有这个简单的查询。

with bunch_of_things as (
    select vans_id from shoes where adidas_id = 1
)

select * from vans where vans.id in (bunch_of_things) ;
Run Code Online (Sandbox Code Playgroud)

我收到错误column "bunch_of_things" does not exist

我知道我可以将第一个选择放在第二个查询的括号内,以定义 IN 部分

但由于我将在同一事务中多次使用第一个查询的结果,因此我不想多次执行相同的查询。

那么如何才能让 IN 与 CTE 一起工作呢?

(如果这是不可能的,我怎样才能获得一次查询结果并在事务中多次使用它们?)

谢谢

postgresql transactions common-table-expression sql-in postgresql-10

6
推荐指数
1
解决办法
3503
查看次数

Postgres IN 运算符中不区分大小写?

我的示例 SQL 是

select * from fruits where name in ('Orange','grape','APPLE','ManGO',etc....);//
Run Code Online (Sandbox Code Playgroud)

是否可以在 Postgres 的 IN 运算符中包含 ilike 或 ~* ?

我的解决方案是

select * from fruits where upper(name) in 
(upper('Orange'),upper('grape'),upper('APPLE'),upper('ManGO'),etc....);
Run Code Online (Sandbox Code Playgroud)

我认为这不是正确的方法,请让我知道这种情况的最佳解决方案

sql postgresql case-insensitive sql-in

4
推荐指数
1
解决办法
2676
查看次数

具有许多值的 Postgres IN 子句不使用部分索引

我正在使用 Postgres 9.2.24。

我有一个以_order大约 100,000,000 行命名的表。该表有一个名为 的列merged_id int8。大约 2,000,000_order行有一个merged_id值,其余的为空。

我找到了两种不同的 Postgres 行为,我在其中_order使用查询进行搜索

select * from _order where merged_id in ( 10001 ,10002 ,10003 ....., 11000);
Run Code Online (Sandbox Code Playgroud)

如果我创建这样的索引:

create index order_merged_id_index on _order(merged_id);
Run Code Online (Sandbox Code Playgroud)

无论 in 子句中有多少个 id(测试从 1 到 50 到 100 到 200 到 1000)EXPLAIN显示搜索都将使用index_scan.

但是如果我创建这个部分索引:

create index order_merged_id_index on _order(merged_id) where merged_id is not null;
Run Code Online (Sandbox Code Playgroud)

EXPLAINseq_scanWHERE子句中显示100 多个 ID 号。

为什么是这样?
有什么办法可以解决吗?

sql postgresql indexing sql-in

3
推荐指数
1
解决办法
1403
查看次数

重写大型IN子句的最佳性能是什么?

我使用go和gorm编写了一个API,它在我们的数据库上运行计算并返回结果.

我只是IN在使用聚合时达到了条件的参数限制.示例查询:

SELECT SUM(total_amount) from Table where user_id in(...70k parameters) group by user_id
Run Code Online (Sandbox Code Playgroud)

我当前的一个边缘案例有> 65535个用户ID,所以我的Postgres客户端抛出一个错误:

got 66037 parameters but PostgreSQL only supports 65535 parameters
Run Code Online (Sandbox Code Playgroud)

我不确定最好的办法是什么.一个将处理此边缘情况的大量参数,同时不影响我的典型用例.我是否对id进行分块并迭代多次查询将其存储在内存中,直到我拥有所需的所有数据?用ANY(VALUES)...

显然,从查询中我对Postgres的知识非常有限,所以任何帮助都会令人难以置信地受到赞赏.

sql postgresql go sql-in go-gorm

3
推荐指数
1
解决办法
314
查看次数

对一个表进行简单选择查询时出现消息 8623,级别 16,状态 1,第 1 行错误

如何优化在一个表中搜索不属于一组的 ID 的简单查询。

我创建了以下查询

Select userId 
from user 
where userId not in (5000, 5001, 5002, 5003, more....)
Run Code Online (Sandbox Code Playgroud)

请注意,该列表包含超过 35000 行。我收到以下数据库错误

消息 8623,级别 16,状态 1,第 1 行
查询处理器耗尽内部资源,无法生成查询计划。这是一种罕见的事件,仅适用于极其复杂的查询或引用大量表或分区的查询。

有些人建议通过使用左连接来优化查询,但我只是在一个表中搜索,那么还有什么选择呢?

sql t-sql sql-server subquery sql-in

3
推荐指数
1
解决办法
3516
查看次数

SQL Server:删除字符串值包含其他值的位置

我想从表中删除所有记录,其中选择的字符串值包含在另一个表中的另一个值中(忽略区分大小写).

例如:if value1="Hello"(来自一个表)和value2-"Hello word"(来自另一个表),那么该记录应该被删除.

DELETE FROM [table1] 
WHERE value1 LIKE  '%' + (SELECT value2 FROM [table2]) + '%'
Run Code Online (Sandbox Code Playgroud)

但是该SQL语句返回错误.

sql sql-server sql-in sql-delete sql-like

2
推荐指数
1
解决办法
758
查看次数