SELECT列EXCEPT从文件加载的值

时间:2016-07-01 13:40:30

标签: c# sql firebird

我们说我有表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,那么不要选择那一行,所以现在输出:

3
4

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

基本上我想

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

我只需要命令逻辑,我知道其他一切。

2 个答案:

答案 0 :(得分:4)

添加AND [column2] NOT IN [来自txt的值]:

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

答案 1 :(得分:0)

如果您熟悉UNION,请了解EXCEPT以非常类似的方式运作,例如两个表表达式必须具有相同数量的列,具有相同的数据类型,按从左到右的顺序等。

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? );