当前位置: 首页 > 面试题库 >

MySQL:选择列为空的行

柯昆
2023-03-14
问题内容

我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。

我的查询看起来像这样:

SELECT pid FROM planets WHERE userid = NULL

每次都清空。

据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(userid = ' '),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法存储null。我将表切换到innoDB,但是现在我觉得问题可能是由于它可能转换表的方式实际上实际上仍然不是null。我想这样做,而不必将表重新创建为innoDB或其他任何形式,但是如果需要的话,我当然可以尝试一下。


问题答案:

SQL NULL的特殊之处,您必须这样做WHERE field IS NULL,因为NULL不能等于任何东西,

包括自身(即:NULL = NULL始终为false)。

参见Rule 3
https://en.wikipedia.org/wiki/Codd%27s_12_rules



 类似资料:
  • 问题内容: 在MySQL中,是否只能选择存在某些内容的列? 例如,我有以下查询: 我试图仅选择电话以813开头并且phone2中包含某些内容的行。 问题答案: 比较空字符串的值: 请注意,值解释为。

  • 问题内容: 您如何编写SELECT语句,该语句仅返回某列的值为空的行? 问题答案: 您的意思是: ?

  • 问题内容: 我有这些MySQL表: 表格1: 表2: 而这个查询: 此查询将返回table1的所有行,即1,2,3 我只想选择在左关节中找不到的行。所以它应该只返回ID为ID的行 我想要与INNER JOIN相反,它将仅选择在联接中找到的行。如何获得相反的结果(例如是否存在左联接),忽略它并移至下一行。希望我明白 问题答案: 您可以使用以下查询: 虽然,根据您的索引,您可能会发现两个联接的性能更好

  • 我有这些MySQL表: 表1: 表2: 而这个查询: 此查询将返回table1中1,2,3的所有行 我只想选择在左关节中找不到的行。因此,它应该只返回id为 我想要一种与内部联接相反的方式,它将只选择联接中找到的行。如何获得相反的方式,比如如果存在左联接,忽略它并移动到下一行。希望我很清楚

  • 问题内容: 这是我的基本表(显示为关联数组): 在另一个名为的表上,我可以添加多个属于一行的自定义数据。像这样: 我目前正在制作,但它只会增加,并给我行。我想要的是我的查询返回如下内容: 行值变成一列,而,它就是值。 我该怎么做? 问题答案: SELECT a.ID, a.Campaign_ID, a.FirstName, a.LastName, MAX(CASE WHEN b.data = ‘q

  • 我当前的查询看起来像这样: 但是,在输入他们的名字或姓氏时,客人可能会决定在他们的名字中加一个空格(例如,安妮·玛丽或安妮·玛丽或安妮·玛丽应该是同一个人)。我想做的是能够执行上面的代码,但是where语句只能基于字母进行比较,而不考虑空格和大小写。我希望这是有意义的! 我将在表“来宾”中预先填入我的来宾姓名。我不想输入没有大写或空格的姓名,因为这些信息也将用于联系他们。 帮忙?