You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写HQL实现同一员工仅展示任意一种contact_type

HiveQL实现每个员工保留任意一种联系方式的方案

下面提供两种实用的解决方案,适配你不知道每个员工具体有多少种联系方式的场景:

方法1:窗口函数ROW_NUMBER()(推荐,灵活可控)

通过按员工ID分组,给每组内的记录生成序号,然后只保留序号为1的记录即可。排序规则可以按需指定,既可以固定选某类,也可以随机选择。

SELECT Emp_id, contact_type, contact_value -- 替换为你实际需要的字段
FROM (
    SELECT 
        Emp_id, 
        contact_type,
        contact_value,
        -- 按Emp_id分组,排序规则可选:用contact_type固定取某类,或rand()随机选
        ROW_NUMBER() OVER (PARTITION BY Emp_id ORDER BY contact_type) AS rn
    FROM your_table_name -- 替换为你的表名
) t
WHERE rn = 1;
  • 若想随机选择一种联系方式,把ORDER BY contact_type改成ORDER BY rand()即可,每次执行结果可能不同;
  • 若想固定选择某类(比如按字符顺序取第一个),保持ORDER BY contact_type即可,结果稳定。

方法2:GROUP BY结合聚合函数(简洁高效)

如果仅需要保留员工ID和任意一种联系方式类型,用聚合函数直接提取分组内的任意值即可,MAX()或MIN()会按字符顺序返回对应值:

SELECT 
    Emp_id,
    MAX(contact_type) AS contact_type -- 也可替换为MIN(contact_type)
    -- 若需要对应联系方式值,建议用方法1,避免聚合时的字段不匹配问题
FROM your_table_name
GROUP BY Emp_id;

内容的提问来源于stack exchange,提问作者Sivarathna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:00:54