当我使用
时SELECT * FROM table WHERE column IN (1, 2, 3, 3, ..., 1000)
它被视为
... WHERE column = 1 OR column = 2 OR ... OR column = 1000
但我想要这个
... WHERE column = 1 AND column = 2 AND ... AND column = 1000
列中的有id参数。有没有一种简单的方法可以解决这个问题?
有可能,因为它是与m:n关系的表。一种产品可以有许多参数。
CREATE TABLE IF NOT EXISTS `productparametervalues` (
`f_product_id` int(11) NOT NULL AUTO_INCREMENT,
`f_parameterValue_id` int(11) NOT NULL,
PRIMARY KEY (`f_product_id`,`f_parameterValue_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
答案 0 :(得分:4)
编辑:修改了我的答案,以匹配添加到问题中的表格架构。
您可以使用GROUP BY / COUNT DISTINCT来实现此目的。在HAVING COUNT上测试的值应该等于IN子句中包含的项目数。
SELECT f_product_id
FROM productparametervalues
WHERE f_parameterValue_id IN (1, 2, 3, ..., 1000)
GROUP BY f_product_id
HAVING COUNT(DISTINCT f_parameterValue_id) = 1000;
答案 1 :(得分:0)
不,这是不可能的。
没有语法可以做到这一点,因为该子句总是评估为FALSE
;一个字段怎么可能有这样的多个值?