SELECT 列 EXCEPT 值是从文件加载的

SELECT columns EXCEPT values that are loaded from file

假设我有 table Table1:

|Column1|Column2|Column3|
|1      |25     |a      |
|2      |48     |a      |
|3      |25     |b      |
|4      |25     |d      |
|5      |16     |e      |

我有命令:

"SELECT Column1 FROM TABLE1 WHERE Column2 = 25)";

所以现在输出是:

1
3
4

现在我想做同样的事情,但是如果 column3 = a,那么就不要 select 那一行,所以现在的输出是:

3
4

现在我想从 txt 文件加载 A,但在该文件中会有更多值(a、b、d、g、u...)

基本上我想

SELECT [columns] FROM [table] WHERE [column1] = 1 EXCEPT [column2] = [values from txt]

我只需要命令的逻辑,其他我都知道。

添加 AND [column2] NOT IN [values from txt]:

SELECT [columns] FROM [table]
WHERE [column1] = 1 AND [column2] NOT IN  (a, b, d, g, u...)

如果您熟悉 UNION,那么就会知道 EXCEPT 的工作方式非常相似,例如两个 table 表达式必须具有相同的列数和相同的数据类型,从左到右的顺序等等。

SELECT [columns]
  FROM [table]
 WHERE [column1] = 1 
EXCEPT
SELECT [columns]
  FROM [table]
 WHERE [column2] = [values from txt]

您使用 EXCEPT 的方式更像是 SQL 的 WHERE..ALL 语法,例如类似于:

SELECT [columns]
  FROM [table]
 WHERE [column1] = 1 
       AND [column2] <> ALL ( SELECT [values from txt] FROM ?somewhere? );