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

MySQL查询:如何仅当两个键值对同时存在时返回ID 100?

解决方法:匹配同一ID下的多个键值对

原查询无法得到结果的核心原因是:它要求单条记录同时满足两个互斥的键值对条件——一条记录的keyValue不可能既是Event Name又是Event Number,自然查不到数据。以下是三种可行的修改方案:

方案1:分组统计法

先筛选出符合任一目标键值对的记录,再按ID分组,仅保留刚好有2条符合条件记录的ID(说明两个键值对都存在):

SELECT id
FROM TABLE_STRINGS
WHERE (keyValue = 'Event Name' AND value = 'Day 1')
   OR (keyValue = 'Event Number' AND value = '1')
GROUP BY id
HAVING COUNT(*) = 2;

方案2:EXISTS子查询法

找到存在第一个键值对的ID,同时验证该ID也存在第二个键值对的记录:

SELECT DISTINCT id
FROM TABLE_STRINGS t1
WHERE keyValue = 'Event Name' AND value = 'Day 1'
  AND EXISTS (
    SELECT 1
    FROM TABLE_STRINGS t2
    WHERE t2.id = t1.id
      AND t2.keyValue = 'Event Number' AND t2.value = '1'
  );

方案3:自连接法

将表与自身连接,分别匹配两个键值对条件,确保同一ID同时拥有这两条记录:

SELECT DISTINCT t1.id
FROM TABLE_STRINGS t1
JOIN TABLE_STRINGS t2 ON t1.id = t2.id
WHERE t1.keyValue = 'Event Name' AND t1.value = 'Day 1'
  AND t2.keyValue = 'Event Number' AND t2.value = '1';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:07