这可能是一件小事
但我尝试使用这个sql语句:
SELECT * FROM Colors
WHERE colorHueWarmth < 0
AND colorV >=0.7
AND (fk_subCategory=4 OR fk_subCategory=5 OR fk_subCategory=11)
在结果中我获得了完美的colorHueWarmth和colorV,但我也获得了除4,5或11之外的其他值的fk_subcategories。
我尝试更改值但没有结果,甚至可以做这样的声明吗?
有人在做错什么吗?
提前致谢
答案 0 :(得分:0)
你实际上有多种选择;虽然我会指出查询(在你的问题中)实际上对我有用(见Sql Fiddle)
SELECT
*
FROM
Colors
WHERE
colorHueWarmth < 0
AND colorV >=0.7
AND (fk_subCategory=4 OR fk_subCategory=5 OR fk_subCategory=11)
正如其中一条评论所述,我猜你的原文在fk_subCategory
条款(我之前的小提琴中的第三个表格)上没有大括号。在使用逻辑时,括号非常重要,应始终用于将项目组合在一起。
最简单的解决方案如下:
SELECT
*
FROM
Colors
WHERE
colorHueWarmth < 0
AND colorV >=0.7
AND (fk_subCategory IN(4,5,11));
您可以在线找到大量关于LIKE
条款的文档,这里有一些您可能会觉得有用的文章:
考虑到外键约束(4,5或11)的大小,IN
子句是一个合理的选项,如果你有其他查询使用类似于大型集合的东西,这可能会变得非常低效,在这种情况下你可以创建一个临时表,其中包含ID和INNER JOIN
。 (here is a question regarding alternatives to LIKE
)