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,您确定这个被接受的答案正在运行吗?我尝试了相同的代码构造,但它有语法错误