gpt4 book ai didi

sql inner join - 多列而不是行

转载 作者:行者123 更新时间:2023-11-29 00:59:45 27 4
gpt4 key购买 nike

我的数据库结构:

t_data_fields
id | field_name | field_value

t_data
id | fields_id | name |

t_data 中的每一行在 t_data_fields 表中都有与其关联的行数。我想知道是否可以将额外的 field_name 和 field_value 附加到原始 t_data 行,而不是加入数据宽度 data_fields 并为每个数据条目获取多行。

所以,而不是:

id  fields_id name   field_name field_value
2 1 row2 color black
2 1 row2 brand DG
2 1 row2 type shirt

我想要这样的结果:

id  fields_id name   field_name field_value field_name field_value field_name field_value
2 1 row2 color black brand DG type shirt

我可以做第一个版本,我只是想看看是否有可能得到我想要的结果集

最佳答案

您可以每次使用不同的别名重复加入一个表,但它的扩展性不好,而且不灵活。

从你在这里所做的事情来看,更清楚地定义你的模型/模式会更有意义,这样任何给定的产品都具有称为 color 的特定属性, brandsizetype 等,并允许它们为 NULL。然后你有一个非常干净的行,其中包含你需要的所有数据,并且你正在按预期使用 MySQL。不要担心有很多列:MySQL 有 50 列很好,尽管它不太人性化(警告:有行长度限制,所以如果你有很多长 varchars 时要小心)。

假设您需要任意属性,另一种选择是将编码在 TEXT 字段中的数据存储在数据库的单个列中(如果您采用这种方式,我推荐使用 JSON)。不过,以这种方式对数据执行数据库操作要困难得多,因此肯定需要权衡。

关于sql inner join - 多列而不是行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com