Mysql查询。获取查询的最佳方法
Mysql查询。获取查询的最佳方法,mysql,sql,Mysql,Sql,字段1 |字段2 51301 | FOO 51301 | FOO 51302 |富 51302 |巴 51302 |福巴 51302 |福巴 51303 |巴 51303 |巴 字段2可能包含FOO、BAR或FOOBAR。Mysql查询,如果任何时间点field2有FOO和BAR以及FOOBAR,则获取所有field1。换句话说,如果field2已设置为FOO、BAR和FOOBAR,请给我field1。秩序并不重要 按id从mytable_审核组中选择字段1,字段2在('FOO','BAR'
字段1 |字段2
51301 | FOO
51301 | FOO
51302 |富
51302 |巴
51302 |福巴
51302 |福巴
51303 |巴
51303 |巴
字段2可能包含FOO、BAR或FOOBAR。Mysql查询,如果任何时间点field2有FOO和BAR以及FOOBAR,则获取所有field1。换句话说,如果field2已设置为FOO、BAR和FOOBAR,请给我field1。秩序并不重要
按id从mytable_审核组中选择字段1,字段2在('FOO','BAR','FOOBAR')中有字段2;
但它正在得到结果,要么field2要么是FOO,BAR,要么是FOOBAR。如果field2在某个时间点是FOO and BAR and FOOBAR,有没有办法得到结果。这就是您想要的吗
select field1
from table t
where field2 in ('FOO', 'FOOBAR', 'BAR')
group by field1
having count(distinct field2) = 3;
以下是获取满足规范的
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'
我建议您尝试一下,然后告诉我们您尝试了什么以及具体出了什么问题。我确实根据id从mytable_审计组中选择了字段1,字段2的字段2位于('FOO'、'BAR'、'FOOBAR');更新了问题。