Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有人能解释一下为什么这些查询是不一样的吗?

有人能解释一下为什么这些查询是不一样的吗?
EN

Stack Overflow用户
提问于 2010-02-04 15:12:37
回答 4查看 183关注 0票数 2

我维护了一个查询,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select field_1, field_2
from source_table
minus
select field_1, field_2
from source_table
where status_code in (3, 600);

当我看到这个查询时,我立即想到,“这太差劲了。为什么不使用'NOT IN‘并去掉减号业务呢?所以我把它重写如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select field_1, field_2
from source_table
where status_code not in (3, 600);

为了再次检查我的理智,我得到了每个查询的计数。令我惊讶的是,第一个查询返回789,089条记录,第二个查询返回1,518,450条记录!

我从几个角度看过这个问题,但我不知道这两个查询有什么不同。有没有人能解释一下发生了什么,或者为什么我今天早上是个笨蛋?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-04 15:18:30

这些查询确实是不同的。field_1field2不等同于status_code 3和600。field_1可以是'A‘,field_2可以是'B',因此您将从第一个SELECT中删除看起来像A, B的记录。原始的可能是实现正确结果的最好方法。

编辑:为了让您更好地了解发生了什么,您可以通过执行子查询,以类似于编写查询的方式获得相同的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select distinct field_1, field_2
from source_table
where (field_1, field_2) not in (
    select field_1, field_2
    from source_table
    where status_code in (3, 600)
);
票数 9
EN

Stack Overflow用户

发布于 2010-02-04 15:27:37

如果对减号和减号的组合没有唯一约束,则第二个查询可能包含重复项,而第一个查询不包含,因为‘field_1’将禁止它们。尝试使用'distinct‘进行第二个查询,并查看计数是否匹配。

票数 4
EN

Stack Overflow用户

发布于 2010-02-04 15:34:48

UNION、MINUS和INTERSECT运算符仅返回唯一值。如果有两行具有相同的field_1和field_2,则第一个查询将计数一次,而第二个查询将计数两次:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> insert into source_table values ('a', 'b', 10);

SQL> insert into source_table values ('a', 'b', 10);

SQL> select field_1, field_2
  2  from source_table
  3  minus
  4  select field_1, field_2
  5  from source_table
  6  where status_code in (3, 600);

FIELD_1    FIELD_2
---------- ----------
a          b

SQL> select field_1, field_2
  2  from source_table
  3  where status_code not in (3, 600);

FIELD_1    FIELD_2
---------- ----------
a          b
a          b
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2200719

复制
相关文章
jmeter读取csv文件
操作步骤: 1.读取csv文件 2.编辑httpSampler
互联网金融打杂
2018/08/02
1.5K0
jmeter读取csv文件
Tensorflow | 读取csv文件
结果好长,给出关键的部分: INFO:tensorflow:Saving evaluation summary for step 12001: accuracy = 0.966667, loss = 0.461221 Accuracy: 0.966667
努力在北京混出人样
2019/02/18
1.8K0
JAVA读取csv文件_java读取csv文件某一列
当读取的是一个简单的csv文件,即文件的列字段中不包含分隔符时,可以使用BufferedReader或者Scanner类去读取
全栈程序员站长
2022/11/16
3.8K0
go语言读取CSV文件
package main import ( "encoding/csv" "fmt" "io/ioutil" "strings" ) // 游戏读取数据,读取游戏配置数据 func ReadCsv_ConfigFile_Fun(fileName string) bool { // 获取数据,按照文件 fileName = "./csv/" + fileName cntb, err := iouti
李海彬
2018/03/22
6.5K0
Python学习:读取csv文件
CSV是Conma Sepatrate Values(逗号分隔值)的缩写,文档的内容是由‘,’分隔的一列列数据构成的。CSV格式是电子表格和数据库最常用的导入和导出格式。 CSV模块实现了以CSV格式读取和写入表格数据,它允许程序员以Excel首选格式写入数据,或者从Excel生成的文件中读取数据。
烤粽子
2021/07/07
2.7K0
Python学习:读取csv文件
读取csv(tsv)文件出错
用以下语句读tsv文件:df_in=pd.read_csv('../data/voyage_report_20220623.tsv', sep='\t')报错如下:ParserError: Error tokenizing data. C error: EOF inside string starting at row 15212改成:df_in=pd.read_csv('../data/voyage_report_20220623.tsv', sep='\t',quoting=csv.QUOTE_NONE
西西木木
2022/06/24
2K0
java读取写入CSV文件
[1]使用Split函数分成一个String[]: https://blog.csdn.net/u013555719/article/details/106029538
演化计算与人工智能
2020/08/14
4.1K0
java读取写入CSV文件
python中如何打开csv文件_python如何读取csv文件
python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。
全栈程序员站长
2022/09/16
7.9K0
python中如何打开csv文件_python如何读取csv文件
QT 读取csv文件「建议收藏」
最近项目中提出的需求是从excel表格中导入数据,查阅了很多资料之后,发现直接操作xls格式文件并不容易,之后找到了一个比较好的解决办法,那就是把xls文件另存为csv文件,然后在程序中进行操作。首先大致说明一下这两种格式的区别:
全栈程序员站长
2022/09/13
3.8K0
python文件操作步骤_python读取csv文件
文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件
全栈程序员站长
2022/09/19
1.6K0
python pandas读取csv文件_pandas将数据写入csv
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175441.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
5.9K0
python pandas读取csv文件_pandas将数据写入csv
python pandas.read_csv参数整理,读取txt,csv文件
pandas.read_csv参数整理 读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html 参数: filepath_or_buffer : str,pathlib。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handl
学到老
2018/03/16
6.4K0
Android 读取csv格式数据文件
什么是csv文件呢?百度百科上说 CSV是逗号分隔值文件格式,也有说是电子表格的,既然是电子表格,那么就可以用Excel打开,那为什么要在Android中来读取这个.csv格式的文件呢?因为现在主流数据格式是采用的JSON,但是另一种就是.csv格式的数据,这种数据通常由数据库直接提供,进行读取。下面来看看简单的使用吧
晨曦_LLW
2020/09/25
2.4K0
Python--读取csv文件的整列
上代码: #利用pandas读取csv文件 def getNames(csvfile): data = pd.read_csv(csvfile,delimiter='|') # 1--读取的文件编码问题有待考虑 names = data['EnName'] return names 读取EnName这一列
K同学啊
2019/01/22
2.9K0
python pandas.read_csv参数整理,读取txt,csv文件
更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html
学到老
2019/02/14
3.8K0
Java读取pkl文件_theano csv到pkl文件
my_data = genfromtxt(csvFile, delimiter=’,’, skip_header=1)
全栈程序员站长
2022/09/30
1.3K0
Python数据分析之读取文件读取CSV读取Excel读取MySQL读取MongoDB
Python的数据分析,大部分的教程都是想讲numpy,再讲Dataframe,再讲读取文件。但我看书的时候,前面二章看的实在头晕,所以,我们还是通过读取文件来开始我们的Python数据分析吧。 读取
罗罗攀
2018/07/03
5.8K0
python读取与写入csv EXCEK HDF 文件
一. 数据文件         pd指pandas简称,df指DataFrame对象。 1. csv 读取  pd.read_csv('foo.csv') 写入  df.to_csv('foo.csv') 2. HDF5 读取  pd.read_hdf('foo.h5', 'df') 写入  df.to_hdf('foo.h5', 'df') 3. Excel 读取  pd.read_excel('foo.xlsx', 'sheet1', index_col=None, na_values=['NA']) 写入  df.to_excel('foo.xlsx', sheet_name='sheet1') 二. 数据结构 1. Series         Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。创建Series的方法为 >>>s=Series(data, index=index) data可以是Python词典、ndarray和标量值。 2. DataFrame         DataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。 3. Panel         Panel很少使用,然而是很重要的三维数据容器。Panel data源于经济学,也是pan(el)-da(ta)-s的来源。在交叉分析中,坐标轴的名称略显随意 items: axis 0  代表DataFrame的item major_axis: axis 1  代表DataFrames的index(行) minor_axis: axis 2  代表DataFrames的列 4. Panel4D         Panel4D是像Panel一样的4维容器,作为N维容器的一个测试。 labels: axis 0  每个item相当于panel items: axis 1  每个item相当于DataFrame major_axis: axis 2  它是dataframe的index minor_axis: axis 3  它是dataframe的columns         Panel4D是Panel的一个子集,因此Panel的大多数方法可用于4D,但以下方法不可用:join, to_excel, to_frame, to_sparse, groupby。 5. PanelND         PanelND是一个拥有factory集合,可以创建像Panel4D一样N维命名容器的模块。
学到老
2019/02/14
1.8K0
【python】读取csv xlsx xlx txt文件 类
只需修改path class Reader: """ 可读取的文件格式: .csv .tsv .xlsx .xlx .txt """ @staticmethod def change_1d_array(array, header_cut=None, str_to_float=None): """ 为一维数组去掉第一个值;将字符串转为数值 :param array: type:<class 'numpy.ndarray'
司六米希
2022/11/15
1.1K0
python读取与写入csv EXCEK HDF 文件
一. 数据文件         pd指pandas简称,df指DataFrame对象。 1. csv 读取  pd.read_csv('foo.csv') 写入  df.to_csv('foo.csv') 2. HDF5 读取  pd.read_hdf('foo.h5', 'df') 写入  df.to_hdf('foo.h5', 'df') 3. Excel 读取  pd.read_excel('foo.xlsx', 'sheet1', index_col=None, na_values=['NA'])
学到老
2018/03/16
2.2K0

相似问题

匿名邮件发送:中继访问被拒绝

12

无法发送邮件:中继访问被拒绝

11

发送电子邮件时中继访问被拒绝

22

通过SMTP向非本地地址发送邮件时,中继访问被拒绝

11

Python -发送电子邮件时发生错误(中继访问被拒绝)

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文