【问题标题】:select all rows if condition parameter is null如果条件参数为空,则选择所有行
【发布时间】:2014-08-06 07:32:59
【问题描述】:

所有行

SELECT * FROM table

一行

SELECT * FROM table WHERE id = 3

我想获取所有行,如何获取?

示例

SELECT * FROM table WHERE id = 0

【问题讨论】:

  • 为什么不能用第一个例子?
  • 您可以使用第一个查询获取所有行
  • 你到底想达到什么目的。请说明。
  • 在程序中,我将使用,如果参数为空,我想获取所有行。
  • 如果参数不为null,则只检查程序,然后添加where条件,否则不添加。

标签: mysql select conditional-statements where


【解决方案1】:

如果你想获取参数为 0 的所有行,那么使用这个:

SELECT * FROM table WHERE id = ? OR ? = 0;

我希望这就是你想要的。

【讨论】:

    【解决方案2】:

    你的问题有点不清楚,但我猜你正在寻找一种方法来选择所有 id,以防给定的 id 参数为零。

    SELECT * FROM mytable WHERE id = @id OR @id = 0;
    

    或者用 NULL 代替零:

    SELECT * FROM mytable WHERE id = @id OR @id IS NULL;
    

    【讨论】:

    • IFNULL(id,3);可以替代吗?
    • 没有。 id 永远不会为空,因为它是主键。 (还是我误解了您的数据库设计和您的问题?)我的理解是参数@id 可以为NULL。所以WHERE id = @id OR @id IS NULL 或IsNull:WHERE IFNULL(@id,id) = id
    【解决方案3】:

    可能:

    $query = 'SELECT * FROM table';
    
    if (isset ($id)) {
      $query .= " WHERE id = $id";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2014-04-01
      • 1970-01-01
      相关资源
      最近更新 更多