【问题标题】:phpmyadmin - How make (displayed) column widths narrower than column header?phpmyadmin - 如何使(显示的)列宽比列标题窄?
【发布时间】:2019-07-16 00:15:16
【问题描述】:

使用 phpmyadmin 管理 MySQL 数据库。

在设计我们的数据库时,我们制作了描述性的列名。这些往往相当长,即使列内容很窄。

有没有办法告诉 phpmyadmin 显示列,宽度基于列内容,忽略列标题?

我想在我的显示器上放置更多有用的数据,而不必像往常一样滚动。

对于给定的表,我知道如何编写在结果中使用较短名称的自定义查询,但这很乏味:SELECT long_name ln, another_column ac, ..

最好的答案是 phpmyadmin 中的一些选项。

我会接受一个 mysql 查询的答案,该查询使用表的元数据来简单地缩短所有列名(在结果中,不更改表),如果可以做到这一点而不必手动提及所有列名。如果某些列以重复的显示名称结束,那也没关系 - 如果 phpmyadmin 仍然可以显示结果。

不可接受(出于我的目的)将是一个完全隐藏标题的答案,或者用不是从列名派生的名称替换它们 - 例如1、2、3 或 a、b、c 任意 - 在查看输出时,哪一列是不明显的。

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    对我的目的来说足够好的部分解决方案。

    第 1 步:

    -- USE mydatabase;
    SET @columnList = (SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_NAME='mytable');
    SET @query = CONCAT('SELECT ', @columnList, ' FROM mytable');
    SELECT @query;
    

    第 2 步:手动将上面的结果编辑到 phpmyadmin 的 SQL 查询框中。
    或在下面的“...”中构建一个准备好的语句:

    SET @query = '...';
    PREPARE stmt FROM CONCAT(@query, ' LIMIT ?');
    SET @limit = '50';
    EXECUTE stmt USING @limit;
    DEALLOCATE PREPARE stmt;
    

    请注意,如果没有限制,所有行都由EXECUTE 发送到 phpmyadmin 进行显示,这可能会超时和/或超过某个限制。所以对于 SELECT 查询,包括一个限制。


    (一个完整的解决方案会为输入GROUP_CONCAT 的长列名创建短别名。我没有花时间弄清楚这一步;我只是通过别名手动截断了一些;我不关心的列我删除或移到最后。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 2020-07-01
      • 2013-02-18
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多