【问题标题】:How to SELECT DEFAULT value of a field如何选择字段的默认值
【发布时间】:2012-01-06 04:42:20
【问题描述】:

我似乎无法找到或编写选择默认值的 sqlquery

(我不认为我可以在 phpmyadmin 中生成它供我复制)

我试图选择它,好像它是一个记录,但无济于事......

 $defaultValue_find = mysql_query(
         "SELECT $group FROM grouptable WHERE $group='DEFAULT'")  
      or die("Query failed:".mysql_error());
 $defaultValue_fetch = mysql_fetch_row($defaultValue_find);
 $defaultValue = $defaultValue_fetch[0];
 echo $defaultValue;

【问题讨论】:

    标签: php mysql sql phpmyadmin


    【解决方案1】:

    通过查看INFORMATION_SCHEMA.COLUMNS 表,您可以获得任何表的默认列,实际上还有很多有趣的信息。正如文档所述...

    INFORMATION_SCHEMA 提供对数据库元数据、有关 MySQL 服务器的信息(例如数据库或表的名称、列的数据类型或访问权限)的访问。 (来源:MySQL 8.0 Reference Manual / INFORMATION_SCHEMA Tables / Introduction。)

    所以,要获取列默认值,只需 SELECT COLUMN_DEFAULT,就像...

    SELECT COLUMN_DEFAULT
    FROM information_schema.columns
    WHERE TABLE_SCHEMA = 'YourSchema'
    AND TABLE_NAME = 'YourTable' AND 
    COLUMN_NAME = 'YourField';
    

    然后您可以将其包装到子查询中,SELECT * FROM YourTable WHERE YourField = (queryabove)。这使您可以在 MySQL 查询中创建一个更加可定制的、基于默认值的列表。

    【讨论】:

      【解决方案2】:

      获取关联数组$res中mytable中all字段的默认值:

      // MySQL v.5.7+
      $res = [];
      $sql = "SHOW FULL COLUMNS FROM `mytable`";
      foreach ($PDO->query( $sql, PDO::FETCH_ASSOC ) as $row) {
          $res[$row['Field']] = $row['Default'] ;
      }
      print_r($res);
      

      【讨论】:

        【解决方案3】:
        "SELECT $group FROM grouptable WHERE $group=DEFAULT( $group ) "
        

        或者我认为更好:

        "SELECT DEFAULT( $group ) FROM grouptable LIMIT 1 "
        

        更新 - 更正

        正如@Jeff Caron 所指出的,上述方法仅在grouptable 中至少有 1 行时才有效。如果即使 grouptable 没有行你也想要结果,你可以使用这个:

        "SELECT DEFAULT( $group ) 
         FROM (SELECT 1) AS dummy
           LEFT JOIN grouptable 
             ON True
         LIMIT 1 ;"
        

        【讨论】:

        • 我使用了第二个。很好,谢谢。一个注意事项是,当然, ('group') 应该读为 ($group) - 仅与我提出问题的方式有关 - 无论如何,谢谢并接受!
        • @Adam:你是对的。如果$group 是一列,是的。我想了一会儿,它可能是一个列的值,现在已编辑。
        • 这仅在至少有 1 个结果时才有效。据我所知,始终获取列的默认值的唯一方法是使用类似的方法:SELECT COLUMN_DEFAULT FROM information_schema.columns WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND COLUMN_NAME = 'your_column_name';
        猜你喜欢
        • 1970-01-01
        • 2014-04-11
        • 2019-07-26
        • 2021-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        相关资源
        最近更新 更多