0

我正在使用MySQL Workbench 附带的标准世界模式。我最初尝试这个查询是为了给我美国的所有城市;但是,我一直在底部获得一排空条目。

select * 
from city 
where CountryCode = 'USA';

我查找了一个解决方案,发现MySQL SELECT only not null values。所以,接下来我尝试了这个:

select * 
from city 
where Name is not null and CountryCode = 'USA';

这给了我与第一个查询完全相同的东西。所以,我决定采取不同的方法。我不想获得多个列,而是想看看我是否可以得到该Name列:

select Name 
from city 
where CountryCode = 'USA';

令我惊讶的是,这很好用,而且我不必检查null.

所以我的问题有两个:

  • 为什么我的第二种方法nulls在底部给了我一行(以及如何修复它),以及
  • 为什么最后一种方法没有null在底部给我一个?

编辑:附加信息
另外,不确定这是否重要,但尽管前两个查询nulls在底部返回了一行,但对于所有三个查询,我得到了相同数量的返回行。

这是前两个查询的输出: 前两个查询

这是最后一个的输出:
在此处输入图像描述

4

2 回答 2

2

我对 MySQL 了解不多,但您的前两个查询是可更新查询,因此默认情况下您可能被允许修改或添加记录。然后显示最后的“空”行以允许添加数据,但不对应于表中的任何记录。

您的最后一个查询是不可更新的,因此它不会与最后一个“空”行一起显示。

于 2013-08-05T07:28:27.963 回答
0

关于您的第二个查询.. 当您检查您的字段没有任何值时,您应该检查该字段不为空,如下所示:

SELECT * FROM `city` WHERE name <> '' AND CountryCode  = 'USA'

在最后一个查询中,当您单独选择一个字段时,您在数学中设置和设置没有得到空值或空值像这样在数学中的集合中没有区别

a= {0,1,2} AND b= { , 0 , 1 , 2} 因此,当您单独选择一列时,您有一个集合,因此您没有空值或空值,因为它未在集合中定义

于 2013-08-05T07:40:08.517 回答