MySQL如何从表的createdby和publishedby两列中查询去重的用户ID
解决方案
你可以直接使用MySQL的UNION关键字实现需求,UNION在合并多个SELECT结果集时会自动移除重复行,刚好匹配你去重的要求。
具体查询语句
假设你的业务表名为business_table,请替换为你实际的表名:
SELECT createdby AS userId FROM business_table UNION SELECT publishedby AS userId FROM business_table;
逻辑说明
- 第一条SELECT语句提取全表
createdby列的所有用户ID - 第二条SELECT语句提取全表
publishedby列的所有用户ID UNION会自动合并两个结果集并完成去重,不需要额外加DISTINCT关键字- 如果你需要过滤空值或者添加其他筛选条件,可以分别在两个SELECT语句后加
WHERE子句,需要排序的话也可以在末尾追加排序规则,示例如下:SELECT createdby AS userId FROM business_table WHERE createdby IS NOT NULL UNION SELECT publishedby AS userId FROM business_table WHERE publishedby IS NOT NULL ORDER BY userId;
示例验证
对应你给出的测试数据,执行上述查询后返回的结果就是102、103、104、105,完全符合预期。
内容的提问来源于stack exchange,提问作者Nandhini
相关产品推荐
相关产品推荐

