Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询。获取查询的最佳方法_Mysql_Sql - Fatal编程技术网

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');更新了问题。