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

如何在SQLite中查询同一ID对应不同测试结果的数据?

找出同一ID对应不同TEST_RESULT的SQL正确写法

示例表(Table1)

IDTEST_RESULTDIAGNOSIS
2POSITIVEX78
2NEGATIVEU98
3POSITIVEU98
4NFEGATIVEY55

期望结果

IDTEST_RESULTDIAGNOSIS
2POSITIVEX78
2NEGATIVEU98

错误代码分析

你提供的错误代码存在两个关键问题:

  • 逻辑矛盾:TEST_RESULT= NEGATIVE AND TEST_RESULT = POSITIVE 不可能成立,单条记录的TEST_RESULT只能是一个值
  • 语法错误:字符串类型的NEGATIVE和POSITIVE未加单引号,SQL会将其识别为变量而非字符串常量

错误代码如下:

SELECT *
FROM table1
WHERE ID <> ' ' AND TEST_RESULT= NEGATIVE AND TEST_RESULT = POSITIVE;

正确SQL写法

方法1:子查询筛选多结果ID

先通过分组找出拥有至少两种不同TEST_RESULT的ID,再查询这些ID对应的所有记录:

SELECT t.*
FROM table1 t
WHERE t.ID IN (
    SELECT ID
    FROM table1
    GROUP BY ID
    HAVING COUNT(DISTINCT TEST_RESULT) > 1
);

方法2:窗口函数(适用于MySQL 8.0+、PostgreSQL、SQL Server等)

利用窗口函数统计每个ID对应的不同TEST_RESULT数量,直接筛选数量大于1的行:

SELECT ID, TEST_RESULT, DIAGNOSIS
FROM (
    SELECT *,
           COUNT(DISTINCT TEST_RESULT) OVER (PARTITION BY ID) AS result_count
    FROM table1
) t
WHERE t.result_count > 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:48:39