相关疑难解决方法(0)

IN谓词在SQL中如何工作?

在准备好这个问题的答案后,我发现我无法验证我的答案.

在我的第一个编程工作中,我被告知IN ()谓词中的查询IN会对父查询中包含的每一行执行,因此应该避免使用.

例如,给定查询:

SELECT count(*) FROM Table1 WHERE Table1Id NOT IN (
SELECT Table1Id FROM Table2 WHERE id_user = 1)
Run Code Online (Sandbox Code Playgroud)
Table1 Rows | # of "IN" executions
----------------------------------
      10    |       10
     100    |      100
    1000    |     1000
   10000    |    10000

它是否正确?IN谓词实际上如何工作?

sql optimization performance

20
推荐指数
3
解决办法
6205
查看次数

在sql in子句中使用元组

给定这样的数据库:

BEGIN TRANSACTION;
CREATE TABLE aTable (
a STRING,
b STRING);
INSERT INTO aTable VALUES('one','two');
INSERT INTO aTable VALUES('one','three');
CREATE TABLE anotherTable (
a STRING,
b STRING);
INSERT INTO anotherTable VALUES('one','three');
INSERT INTO anotherTable VALUES('two','three');
COMMIT;
Run Code Online (Sandbox Code Playgroud)

我想做一些事情

SELECT a,b FROM aTable
WHERE (aTable.a,aTable.b) IN
(SELECT anotherTable.a,anotherTable.b FROM anotherTable);
Run Code Online (Sandbox Code Playgroud)

得到答案'一','三',但我得到"接近",":语法错误"

这有可能在SQL的任何风格?(我正在使用sqlite)

我是否犯了严重的概念错误?或者是什么?

sql row-value-expression

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