试图了解一些类似查询的输出

时间:2013-08-05 07:18:43

标签: mysql sql

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

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,但对于所有三个查询,我得到了相同数量的返回行。

以下是前两个查询的输出: first two queries

这是最后一个的输出:
enter image description here

2 个答案:

答案 0 :(得分:2)

我对MySQL知之甚少,但您的两个第一个查询是可更新的查询,因此默认情况下您可能会修改或添加记录。然后显示最后一个'null'行以允许添加数据,但不对应于表中的任何记录。

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

答案 1 :(得分:0)

关于你的第二个查询.. 当你为你的田地检查没有任何价值时,你应该为那个非空的领域进行检查 就像这样:

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

在最后一个查询中,当您选择一个字段时,您可以在数学中设置和设置,而不是获取null或空值 像这样

中的数学集合没有什么不同

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