【问题标题】:T-SQL Merging two items from the same column togetherT-SQL 将同一列中的两个项目合并在一起
【发布时间】:2020-10-07 19:31:33
【问题描述】:

对于一个项目,我有一个用户列表。我的任务是将用户耦合在一起。比如:

Ind   Name
1.    Mary
2.    Jacob
3.    James
4.    Karin

我一直在寻找合并它们的方法,但大多数谷歌 SQL 合并问题都是关于合并列而不是特定项目,更不用说合并两个了。我试图实现的结果是一个新表,我在其中存储了可能的情侣,如下所示:

Ind   Couple
1.    Jacob + Mary
2.    James + Jacob
3.    James + Mary
4.    Karin + James
5.    Karin + Jacob
6.    Karin + Mary

这在 SQL 中是否可行,或者我是否必须使用 PHP 脚本开发一些解决方法,在其中我获取数据并使用 PHP 或 Javascript 对其进行操作,然后将其返回到新表?

提前感谢任何可以提供帮助的人。 附言我被告知服务器使用 Microsoft 或 T-SQL

【问题讨论】:

    标签: sql sql-server merge items


    【解决方案1】:

    您可以使用自联接:

    select u.name, u2.name
    from users u join
         users u2
         on u.ind < u2.ind
    

    【讨论】:

    • 非常感谢,我猜 u 在我的示例中是 tableId 或 Ind 的变量。这是自动化的吗?或者这只会做前 2 个索引?
    • @Guyke 。 . . u 是表别名。根据这个问题,我假设该表名为users
    【解决方案2】:

    这读起来像自加入:

    select t1.name name1, t2.name name2
    from mytable t1
    inner join mytable t2 on t1.name < t2.name
    

    您可以将两个名称通过字符串连接放在一个列中,例如:

    select concat(t1.name, ' + ', t2.name) as couple
    from mytable t1
    inner join mytable t2 on t1.name < t2.name
    

    【讨论】:

    • 感谢您的帮助。这正是我一直在寻找的。在尝试了 Gordon Linoff 的代码后,我意识到他的解决方案将使用更少的数据。因此,我将采用他的解决方案。但是对于任何想回答我的问题的人来说,上面的 GMB 代码正是您所需要的。
    猜你喜欢
    • 2021-07-07
    • 2023-03-22
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多