当前位置: 首页 > 面试题库 >

从多值列查询唯一值

东深
2023-03-14
问题内容

我正在尝试查询“标签”列中的所有唯一值。标签列中的每一行都可以包含多个值。因此,在不被迫进行规范化的情况下,如何查询多值列?

示例行:

Networking
Professionalism
Time Management
Communication, Networking
Career Management, Professionalism
Networking
Communication
Attitude, Interpersonal Skills, Professionalism
Business Protocol, Career Management, Communication, Leadership
Business Protocol, Networking

问题答案:

如果最大元素数量是可预测的,则可以使用此方法(请注意,您需要使用UNION,而不是UNION ALL

Select DISTINCT thefield from thetable where Instr(thefield, ',') = 0
UNION 
Select Distinct Mid(thefield, 1, Instr(thefield, ',')) from thetable Where len(thefield) - len(replace(thefield,',','')) = 1
UNION 
Select Distinct Mid(thefield, Instr(thefield, ',')+1) from thetable Where len(thefield) - len(replace(thefield,',','')) = 1
UNION 
Select Distinct Mid(thefield, Instr(thefield, ',')+1, Instr(Instr(thefield, ',')+1,thefield, ',')) from thetable Where len(thefield) - len(replace(thefield,',','')) = 2
UNION 
Select Distinct Mid(thefield, Instr(Instr(thefield, ',')+1,thefield, ',')+1) from thetable Where len(thefield) - len(replace(thefield,',','')) = 2
--.. and so on (repeat last two Selects as many time as you wish, increasing the where condition by one for each pair)

看起来有些笨拙,但应该可以完成工作。未经测试,因此,在值之前或之后可能会出现一个逗号逗号



 类似资料:
  • 问题内容: df = pd.DataFrame({‘Col1’: [‘Bob’, ‘Joe’, ‘Bill’, ‘Mary’, ‘Joe’], ‘Col2’: [‘Joe’, ‘Steve’, ‘Bob’, ‘Bob’, ‘Steve’], ‘Col3’: np.random.random(5)}) 返回“ Col1”和“ Col2”的唯一值的最佳方法是什么? 所需的输出是 问题答案: 从输入数组

  • 问题内容: 我有一个MySQL表,其中包含以下类型的信息: 这是我用来从该表获取数据的脚本示例: 该脚本显示表格中的每个日期,例如 我只想显示唯一的日期,例如 问题答案: 在MySQL中使用DISTINCT运算符:

  • 问题内容: 如果每个员工有多个联系方式,我将获得多行,但我只希望每位员工列出他们的姓,名,部门名称,电子邮件和电话。 所以它应该像这样 这是我所拥有的,但不起作用: 我用以下查询解决了它: 问题答案: 如果要选择,则在子查询中,这两个联接可能是不必要的: 由于它们,您得到的行与特定人的联系人一样多。 最终查询可能类似于:

  • 问题内容: 我有一张像这样的桌子: 我的问题是;我想找到谁有一个叫亚历克斯的孩子。 我无法在SQL中使用,因为在同一单元格中有多个名称。 所以我用-看起来很聪明,但同时我像Alex一样开始一切:( Alexandre或我想获得dia,但结果是dia和diana :( 如何获得该数据类型的单个Alex? 我希望我能用我的英语不好来解释我的问题:D 问题答案: 最好的解决方案是规范您的架构。您应该有一

  • 有人能提出一种有效的方法,在一列中为另一列中的每个唯一值获取最高值吗 np。数组如下所示[column0,column1,column2,column3] 其中我想根据第3列的唯一值返回第1列的最高值。之后的新数组应该是这样的: 我知道如何通过循环来做到这一点,但这不是我所关心的,因为我工作的桌子很大,我想避免循环

  • 问题内容: 我想从以下列表中获取唯一值: 我需要的输出是: 此代码有效: 我应该使用更好的解决方案吗? 问题答案: 首先正确声明你的列表,以逗号分隔。你可以通过将列表转换为一组来获得唯一值。 如果进一步将其用作列表,则应执行以下操作将其转换回列表: 另一种可能(可能更快)的可能性是从头开始使用集合而不是列表。然后你的代码应为: 正如已经指出的那样,集合不保持原始顺序。如果需要,则应查找有序集合实现