【发布时间】:2020-05-03 07:24:58
【问题描述】:
我在 SQLite3 中运行以下脚本:
drop table if exists B;
drop table if exists C;
create table B (a integer, b text, c text);
insert into B values (1, "1.1", "B");
insert into B values (1, "2.1", "B");
insert into B values (3, "3.1", "B");
insert into B values (4, "4.1", "B");
insert into B values (5, "5.1", "B");
insert into B values (6, "6.1", "B");
insert into B values (7, "7.1", "B");
create table C (a integer);
insert into C (a) values (1), (3), (5);
select * from B where B.a <> C.a;
这个脚本在我运行时抛出一个错误:
错误:第 30 行附近:没有这样的列:C.a
这里的想法是我想从B 中进行选择,其中a 字段不 等于 1、3 或 5。是否无法引用来自同一 SQL 语句中的其他表?如何做到这一点?
预期结果
a|b|c
4|"4.1"|"B"
6|"6.1"|"B"
7|"7.1"|"B"
【问题讨论】:
-
SELECT * FROM B WHERE a NOT IN (SELECT a FROM C) -
这似乎行得通...你知道这个查询是否可以在 Microsoft Access 中构建?
-
这是标准 SQL 但我不使用 MS Access 来确定。
-
您为什么不发表您的评论作为答案?我很乐意接受。
-
附带说明:字符串文字的标准分隔符是单引号 (
'),而不是双引号 (")。双引号用于包含特殊字符的别名(例如select count(*) as "number of rows" from ...)。在某些情况下,如果将两者混淆,您可能会得到不需要的结果(例如:where key = "description"会将列键的内容与列描述的内容进行比较,而不是与字符串“描述”,如果存在具有该名称的列)。