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

查询同一user_id下不同meta_key对应meta_value相等的用户ID

解决方案

针对这种键值对结构的用户元数据表,有两种常用的查询实现方式:

方案1:自连接查询(性能更优,适合大数据量表)

假设你的表名为user_meta,可直接执行以下SQL:

SELECT DISTINCT a.user_id
FROM user_meta a
INNER JOIN user_meta b
  ON a.user_id = b.user_id
  AND a.meta_key = 'first_name'
  AND b.meta_key = 'last_name'
  AND a.meta_value = b.meta_value;

逻辑说明:将元数据表分别取别名映射first_name和last_name两类记录,关联同一个用户下两类记录的值,相等即符合筛选条件,DISTINCT用于避免重复返回同一个用户ID。

方案2:分组聚合查询(扩展性更强,适合多字段比对场景)

SELECT user_id
FROM user_meta
WHERE meta_key IN ('first_name', 'last_name')
GROUP BY user_id
HAVING MAX(CASE WHEN meta_key = 'first_name' THEN meta_value END) = MAX(CASE WHEN meta_key = 'last_name' THEN meta_value END);

逻辑说明:先过滤出需要比对的两个元数据键的记录,按用户ID分组后分别取出两个键对应的值做比对,天然去重无需额外处理。如果后续需要比对更多meta_key,只需要在HAVING子句加对应判断即可。

两种方案执行后都会返回你示例中的1和2两个user_id结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:36:04