MySQL增量列

标签 mysql

我有一个如下表:

ID|Prototype_A|Prototype_B|Prototype_C|Prototype_D|
---------------------------------------------------
1 |Fast381A   |Blue4812   | Green7181 | White4812 |
---------------------------------------------------
2 |Slow841C   |Orange8312 | null      | null      |
---------------------------------------------------
3 |Plane281K  | null      | null      | null      |
---------------------------------------------------

我需要查询返回该 ID 的所有非空原型(prototype)。 例如:

  • 1:快速381A,蓝色4812,绿色7181,白色4812
  • 2:慢841C,Orange8312
  • 3:Plane281K
  • 有没有办法通过通配符选择所有列,例如 select(Prototype_*) 或者我应该以不同的格式设置表格?

    例如,我被告知这种类型的结构是不好的做法:

    ID|Prototypes|
    ---------------------------------------------------
    1 |Fast381A,Blue4812,Green7181,White4812 
    ---------------------------------------------------
    2 |Slow841C,Orange8312
    ---------------------------------------------------
    3 |Plane281K
    ---------------------------------------------------
    

    最佳答案

    SQL 查询返回一组固定的列。如果您想将非 NULL 值组合到单个列中,我建议使用 concat_ws():

    select id,
           concat_ws(',', Prototype_A, Prototype_B, Prototype_C, Prototype_D)
    from t;
    

    这会忽略NULL值。该查询返回两列,一列是原型(prototype)列表。

    而且,您的问题的答案是"is"。您应该考虑更改您的数据结构。让多个列存储相同的内容,仅用一个索引来标识它们通常意味着您需要一个单独的表,每个 id 和每个原型(prototype)各一行。

    编辑:

    你想要一个像这样的表格:

    create table ModelPrototypes (
        ModelProtypeId int primary key auto_increment,
        ModelId int not null,
        ProtoTypeChar char(1),
        Prototype varchar(255)
    );
    

    然后您将使用以下值填充它:

    1   A    Fast381A
    1   B    Blue4812
    1   C    Green7181
    1   D    White4812 
    

    我不确定 PrototypeChar 是否确实需要,但信息在您的表中。

    关于MySQL增量列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320653/

    相关文章:

    mysql - 在MYSQL中,如何将一个数字除以 "-"分成3部分

    mysql - 将记录匹配到今天时出现 SQL 语法错误

    php - 显示带有父类别的类别表

    mysql - 分组 SQL 结果

    php - 如何获取mysql表列的小数位数

    php - 卡在 "sorting results"上的非常小的 table

    java - 结果集不返回任何内容

    php - 从不同的数据库中选择是否会切换用户?

    mysql - 使用不同的 foreign_key 加入并搜索?

    mysql - 如何在案例陈述中使用 Min