field1|field2
51301 | FOO
51301 | FOO
51302 | FOO
51302 | BAR
51302 | FOOBAR
51302 | FOOBAR
51303 | BAR
51303 | BAR
Field2可能包含FOO,BAR或FOOBAR。 Mysql查询获取所有field1如果任何时间点field2有FOO和BAR和FOOBAR。换句话说,如果field2已设置为FOO,BAR和FOOBAR,请给我field1。订单并不重要。
select field1 from mytable_audit group by id, field2 having field2 in ('FOO', 'BAR', 'FOOBAR');
但是得到结果要么field2要么是FOO,要么是BAR,要么是FOOBAR。如果field2在某个时间点是FOO,BAR和FOOBAR,有没有办法得到结果。
答案 0 :(得分:1)
这是你想要的吗?
select field1
from table t
where field2 in ('FOO', 'FOOBAR', 'BAR')
group by field1
having count(distinct field2) = 3;
答案 1 :(得分:0)
以下是获取满足规范的field1
值列表的一种方法:
SELECT t.field1
FROM mytable t
GROUP BY t.field1
HAVING GROUP_CONCAT(DISTINCT
CASE WHEN t.field2 IN ('BAR','FOO','FOOBAR')
THEN t.field2
ELSE NULL
END ORDER BY t.field2) = 'BAR,FOO,FOOBAR'