【问题标题】:Selecting NOT NULL columns from a table从表中选择 NOT NULL 列
【发布时间】:2011-11-19 07:45:38
【问题描述】:

我的表格大约有 80 列。我正在表上执行以下查询。

SELECT * FROM mobile_details WHERE id=4;

确认上述查询将只返回一行。我只想选择没有值NULL 或为空的列。我该怎么做?

注意:执行此操作的一种非常低效的方法是在 SELECT 时将 NOT NULL 放在每一列中。但我需要一种更高效、更有效的方式(在 PHP 代码或 MySQL 查询中)。

我可以这样做吗? SELECT * FROM mobile_details WHERE id=4 AND mobile_details.* NOT NULL;

我在 CentOS 服务器上使用 PHP + MySQL + Apache。

【问题讨论】:

  • itemid 是外键吗?您是否对查询进行左连接?
  • 缺少编写在数据库中运行的代码,然后您将调用它,没有办法让它不返回您要求的所有列,在您的情况下,您要求它返回你们所有的专栏。
  • @BookoFZEUS: ID 是表的主键。我没有做任何左连接。
  • @BookOfZeus:很抱歉造成混乱。 ITEMID 什么都不是。我编辑了我的问题。
  • @iSubmitG 查看 Ned Batchelder 的回答。

标签: php mysql sql


【解决方案1】:

您不能在 SQL 中以编程方式更改列列表。它没有语法。

【讨论】:

  • 假设我将结果存储在$result。如何在 PHP 中高效地做到这一点?
  • @iSumitG:只需使用 === 检查每一列是否为空即可。
【解决方案2】:

你没有。你可以做一些诡计,但这不值得。为什么在处理数据时不跳过空列?在 PHP 中检查很容易。此外,您不应在生产中使用SELECT *。只选择您想要的列,如果您碰巧想要所有列,请将它们全部列出。

【讨论】:

    【解决方案3】:

    您应该在 php 中执行此操作,使用函数 array_filter 过滤空值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-04
      • 2018-05-29
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 2011-12-23
      相关资源
      最近更新 更多