mysql group_concat distinct_MySQL GROUP_CONCAT和DISTINCT

博客讨论了在MySQL中尝试将数据从行转为列的问题,指出这种做法会导致复杂性和维护困难。建议保持数据原始结构,让应用程序处理,以提高可读性和可维护性。总结了转换可能带来的挑战,包括动态列创建、数据一致性问题和应用程序处理的复杂性。
摘要由CSDN通过智能技术生成

我的回答是,不要这样做!

你想要做的是称为旋转.在MysqL中,这通常是用一个地狱来完成的

....

aggregate_function(case when ...),aggregate_function(case when ...),...

块.但由于您不了解所有源代码,因此您必须编写一个过程来为您动态构建语句并执行它.即使这样,你最终也会得到一个类似的表结构

NAME EMAIL twitter facebook google

----------------------------------------------------------

john myemail2@gmail.com yes no no

john myemail@gmail.com no yes yes

那么,您的应用程序的程序员将如何知道列的命名方式?

为避免这种情况,您必须再次执行存储过程中的一个程序设计,以将每个电子邮件的行值放入一列.那么你将如何确定哪一行进入哪一列?如果facebook出现在列source1中的一行和列source2中的另一行中,该怎么办?在您的应用程序中,您必须测试或以其他方式确定实际有多少列,或者每个用户/电子邮件只能有2个来源?

总结一下,这样的结果

name email link

john myemail@gmail.com google

john myemail@gmail.com facebook

john myemail2@gmail.com twitter

完全没问题,应由程序开发人员来处理它.对于他们而言,这比为团队中的数据库人员更容易做到这一点.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值