这是我的表格数据,我希望通过比较多行来找到特定的ID ..
onetsoc_code element_id data_value
11-1011.00 1.B.1.a 1.33
11-1011.00 1.B.1.b 2.00
11-1011.00 1.B.1.c 2.67
11-1011.00 1.B.1.d 3.67
11-1011.00 1.B.1.e 7.00
11-1011.00 1.B.1.f 5.33
11-1011.00 1.B.1.g 5.00
11-1011.00 1.B.1.h 6.00
11-1011.00 1.B.1.i 0.00
11-1021.00 1.B.1.a 1.33
11-1021.00 1.B.1.b 1.33
11-1021.00 1.B.1.c 1.00
11-1021.00 1.B.1.d 3.33
11-1021.00 1.B.1.e 7.00
11-1021.00 1.B.1.f 3.67
11-1021.00 1.B.1.g 5.00
11-1021.00 1.B.1.h 6.00
11-1021.00 1.B.1.i 4.00
11-1031.00 1.B.1.a 1.00
11-1031.00 1.B.1.b 3.67
11-1031.00 1.B.1.c 3.67
11-1031.00 1.B.1.d 4.67
11-1031.00 1.B.1.e 7.00
这是我的表,所以我想要那些 onetsoc_code 所在的
1.B.1.g 5.00
1.B.1.h 6.00
1.B.1.i 4.00
如果您查看表格,那么您会发现 11-1021.00 是我想要的结果。
所以这就是我想要你的理由1.B.1.a到1.B.1.f.我只想一次比较三行,并希望与这些数据相关联的单个 onetsoc_code 。
1.B.1.g,1.B.1.h,1.B.1.i的行可用于所有 onetsoc_code ,所以我只需要那些 onetsoc_code ,再次具有上述条件,
1.B.1.g 5.00
1.B.1.h 6.00
1.B.1.i 4.00
答案 0 :(得分:2)
您可以按onetsoc_code
进行分组,并过滤包含三条DISTINCT
条记录的论坛:
SELECT onetsoc_code
FROM mytable
WHERE (element_id = '1.B.1.g' AND data_value = 5.00)
OR (element_id = '1.B.1.h' AND data_value = 6.00)
OR (element_id = '1.B.1.i' AND data_value = 4.00)
GROUP BY onetsoc_code
HAVING COUNT(DISTINCT element_id, data_value) = 3
在sqlfiddle上查看。
当然,如果保证唯一性,可以节省DISTINCT
操作的费用,而只需使用普通的COUNT(*)
。