【问题标题】:SQL Query returns unexpected NULL valueSQL 查询返回意外的 NULL 值
【发布时间】:2014-07-26 23:56:30
【问题描述】:

运行 SQL 查询时,我得到一个奇怪的 NULL 结果。这是查询:

SELECT * FROM plan LEFT JOIN bill ON plan.planID = bill.planID AND bill.typeID =3 WHERE bill.billID IS NULL 

我正在使用 PDO 对象在 PHP 中运行查询。所有的结果都是这样出来的:

Array ( [planID] => [0] => 7 [clientID] => 4 ...)

问题在于返回的第一个值。如您所见,PlanID 为 NULL,但是当使用数字键拉出相同的值时,它正确显示为“7”。我试图通过在查询代码中添加PDO::FETCH_ASSOC 来解决此问题,但得到以下结果:

Array ( [planID] => [clientID] => 4 ...)

我不明白这是如何发生或为什么发生的。非常感谢任何帮助!

【问题讨论】:

  • 100% 确定您的plan 表中没有空值?
  • 是的,我在后端提取了几行与我的 PHP 提取的行匹配的行,并且它们具有正确的 PlanID,显示在 [0]=> 7

标签: php mysql sql pdo


【解决方案1】:

我不是 100% 确定这是你的问题,但是当你说:

select *
from . . .

它正在返回 all 表中的 all 列。这意味着结果中有两列名为planId,一列来自plan,一列来自bill。来自bill 的那个是NULL,假设where 子句的目的是查找不匹配项。这可能就是您所看到的。

解决方案是明确选择所需的特定列。也许:

select plan.planId
from . . .

【讨论】:

  • 我不确定它在 mysql 中是否合法,但在 oracle 中您可以使用table.* 从特定表中提取。
  • 好点,现在做一些测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2019-11-01
  • 2018-03-15
相关资源
最近更新 更多