Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 IN-所有值都是强制的,而不是“或”_Mysql - Fatal编程技术网

Mysql IN-所有值都是强制的,而不是“或”

Mysql IN-所有值都是强制的,而不是“或”,mysql,Mysql,我有一个问题的这一部分 SELECT * FROM conference WHERE active='1' AND conference_feature_id IN (8,9) 现在,此查询将加载设置为8或9的行 是否有一种方法可以在可能的情况下使用带逗号的IN函数来加载只有8和9的行 因此,没有同时显示它们的行将不会显示 我可以做一个简单的WHERE语句,但如果可能的话,我迫切需要使用in函数 此处解释的结果应该有效: SELECT * FROM myTbl as myTbl1 WHERE

我有一个问题的这一部分

SELECT * FROM conference WHERE active='1' AND conference_feature_id IN (8,9)
现在,此查询将加载设置为8或9的行

是否有一种方法可以在可能的情况下使用带逗号的IN函数来加载只有8和9的行

因此,没有同时显示它们的行将不会显示

我可以做一个简单的WHERE语句,但如果可能的话,我迫切需要使用in函数

此处解释的结果应该有效:

SELECT * FROM myTbl as myTbl1 WHERE active='1' AND conference_feature_id = 8
JOIN
SELECT * FROM myTbl as myTbl2 WHERE active='1' AND conference_feature_id = 9
ON myTbl1.id = myTbl2.id
这应该是可行的:

SELECT * FROM myTbl as myTbl1 WHERE active='1' AND conference_feature_id = 8
JOIN
SELECT * FROM myTbl as myTbl2 WHERE active='1' AND conference_feature_id = 9
ON myTbl1.id = myTbl2.id
试一试

试一试


也许您真正想要的是加载分组在主键上的所有活动会议,主键只包含两个会议功能:8和9

SELECT * 
FROM conference 
WHERE conference_id IN
(
   SELECT conference_id 
   FROM conference 
   GROUP BY conference_id
   HAVING SUM(conference_feature_id IN (8,9)) = 2
)

也许您真正想要的是加载分组在主键上的所有活动会议,主键只包含两个会议功能:8和9

SELECT * 
FROM conference 
WHERE conference_id IN
(
   SELECT conference_id 
   FROM conference 
   GROUP BY conference_id
   HAVING SUM(conference_feature_id IN (8,9)) = 2
)
试一试

试一试


我发现最好的查询是

SELECT * FROM conference WHERE active='1' AND 
conference_feature_id = '8' AND 
conference_feature_id ='9'

你觉得怎么样?

我找到的最好的查询是

SELECT * FROM conference WHERE active='1' AND 
conference_feature_id = '8' AND 
conference_feature_id ='9'

你觉得怎么样?

我相信下面的方法是可行的,但我相信对SQL中的集合类型和位运算符有更好理解的人可以提供更简洁的版本:

SELECT * FROM conference WHERE 
  active='1' 
  AND 
  FIND_IN_SET(8, conference_feature_id) > 0 
  AND
  FIND_IN_SET(9, conference_feature_id) > 0

我相信以下方法可以奏效,但我相信对SQL中的集合类型和位运算符有更好理解的人可以提供更简洁的版本:

SELECT * FROM conference WHERE 
  active='1' 
  AND 
  FIND_IN_SET(8, conference_feature_id) > 0 
  AND
  FIND_IN_SET(9, conference_feature_id) > 0

IN运算符的工作方式是将本例中左侧的值与本例中右侧的值集8,9进行比较,因此,在任何情况下,值都不会同时等于8和9。也许您应该展示您的用例,以帮助我们更好地理解?使用还是使用,以便您希望会议功能id同时具有值8和9?这对mefield来说似乎是不可能的,8,9被展开为field=8或field=9,所以给定的字段不可能同时有两个状态。此外,一个字段或变量一次只能有一个值请查看我的图片。。。我做了一个小组讨论会,向大家展示了每个会议室有2个值,因为这是一个多对多的表。。。例如,在这个示例中,会议室id 3不应该在那里。。。。您认为并集是最好的,因为我的查询比简单的选择更复杂,我只粘贴了它的一部分…IN运算符的工作方式是将左侧的值(在本例中为conference_feature_id)与右侧的值集(在本例中为8,9)进行比较,因此,在任何情况下,值都不会同时等于8和9。也许您应该展示您的用例,以帮助我们更好地理解?使用还是使用,以便您希望会议功能id同时具有值8和9?这对mefield来说似乎是不可能的,8,9被展开为field=8或field=9,所以给定的字段不可能同时有两个状态。此外,一个字段或变量一次只能有一个值请查看我的图片。。。我做了一个小组讨论会,向大家展示了每个会议室有2个值,因为这是一个多对多的表。。。例如,在这个示例中,会议室id 3不应该在那里。。。。你认为联合是最好的,因为我的查询更复杂,而只是一个简单的选择,我只粘贴了它的一部分…这个返回的结果与原始的有什么不同?请查看我的图片。。。我做了一个小组讨论会,向大家展示了每个会议室有2个值,因为这是一个多对多的表。。。例如,在这个示例中,会议室id 3不应该在那里。。。。你认为联合是最好的,因为我的查询比简单的选择更复杂,我只粘贴了一部分。@MRR你的问题有层次,你没有一次写完整的问题,那么我们如何理解。返回的结果与原始结果有什么不同?请查看我的图片。。。我做了一个小组讨论会,向大家展示了每个会议室有2个值,因为这是一个多对多的表。。。例如,在这个示例中,会议室id 3不应该在那里。。。。你认为联盟是最好的,因为我的查询比简单的选择更复杂,我只粘贴了一部分。@MRR你的问题有层次,你没有一次写完整的问题,我们如何理解。嗨,MRR,你确定这个被接受的答案正在运行吗?我尝试了相同的代码构造,但它有语法错误Hi MRR,您确定这个被接受的答案正在运行吗?我尝试了相同的代码构造,但它有语法错误