【发布时间】:2019-07-15 10:21:36
【问题描述】:
我在工作中遇到了一个问题,我对 SQL 或一般的数据库了解太少,甚至不知道如何搜索。
因此,在 StackOverflow 问题上获得无数“观点”之后,这是我自己的第一个。
我有两个表,它们之间没有其他关系,除了同一组列(我称它们为 item_1 到 item_3),其中的值以随机顺序排列。 我需要加入这些表,但我不能只在每一列上加入它们,因为我正在寻找相同的set 项以任何顺序。 两个表中的集合需要相同(没有更多,也没有更少),但位置无关紧要。
这里有一些假表来(希望)解释我的意思:
表1
user_id | use_name | item_1 | item_2 | item_3
--------+----------+--------+--------+--------
1 | Tim | A | B | NULL
2 | Tom | NULL | NULL | C
3 | Sam | A | NULL | NULL
表2
role | item_1 | item_2 | item_3
---------+--------+--------+--------
type1 | A | NULL | B
type2 | A | B | C
type3 | A | NULL | NULL
我正在寻找一个可以生成如下表格的选择/连接:
user_name | role
----------+------
Tim | type1
Sam | type3
我用排列表试试运气,但在实际情况下,我们讨论的不是 3 列而是 10 列,这似乎不是最佳解决方案。 我目前正在尝试使用 pivot / unpivot 实现一些有用的东西,但到目前为止没有任何结果。
我什至会很高兴只有一篇文章的链接。甚至是我的问题的独特名称,我可以用谷歌搜索:)
非常感谢!
【问题讨论】:
-
结果集的逻辑是什么?
-
Sam 只有项目 A -> 以及角色 type_3。 Tim hast item A 和 B -> 以及角色 type_1
-
我真的不确定,我能想到的就是以某种方式获取列中的值,然后按字母顺序排列它们,然后加入。对,是的。这是一种方法,按字母顺序使用“项目代码”创建一个新列。然后你的表 2 将有相同的代码顺序,然后你就可以加入了。