我的数据库中有一个这样结构的表:
obj_id - rel_val
4034 - 7366
4034 - 7387
4035 - 7366
4035 - 8051
4035 - 8057
字段“obj_id” - 它是项目 ID 字段。字段“rel_val”- 属性值 id。 例如。 ID 为 4034 的项目 T 恤。设置属性颜色为“红色”,ID 为 7366。属性大小为“M”(此属性值的 ID 为 7387)。
我应该如何编写正确的 sql 查询来获取颜色为“红色”、大小为“M”以及其他更多内容的所有项目。
我现在拥有的:
$sth = $dbh->prepare("SELECT obj_id
FROM cms3_object_content WHERE rel_val IN ('7343','7355','7368') LIMIT 100");
$sth->execute();
$result = $sth->fetchAll();
我试过使用 operator IN,但如果有任何值 mathces,它会返回 obj_id。
附言对不起,我的英语不好。我希望它能理解我想要什么。
最佳答案
SELECT obj_id
FROM cms3_object_content
WHERE rel_val IN ('7343','7355','7368')
group by obj_id
having count(distinct rel_val) = 3
LIMIT 100
关于mysql - 选择几个精确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286149/