除了上面的问题,我想知道是否有任何方法来优化这个MySQL语句.
SELECT *
FROM `products`
WHERE
`category` = 3073 OR
`category` = 3074 OR
`category` = 3100 OR
`category` = 3102 OR
`category` = 3106 OR
`category` = 3109 OR
`category` = 3111 OR
`category` = 3115 OR
`category` = 3130 OR
`category` = 3134 OR
`category` = 3144 OR
`category` = 3146 OR
`category` = 3152 OR
`category` = 3157 OR
`category` = 3162 OR
`category` = 3163 OR
`category` = 3164 OR
`category` = 3166 OR
`category` = 3167 OR
`category` = 3168 OR
`category` = 3170 OR
`category` = 3171 OR
`category` = 3177 OR
`category` = 3181 OR
`category` = 3182 OR
`category` = 3184 OR
`category` = 3190 OR
`category` = 3191 OR
`category` = 3192 OR
`category` = 3213 OR
`category` = 3224 OR
`category` = 3227 OR
`category` = 3228 OR
`category` = 3235 OR
`category` = 3238 OR
`category` = 3239 OR
`category` = 3240 OR
`category` = 3244 OR
`category` = 3245 OR
`category` = 3246 AND
`active` = 1 AND
`price_notax` > 0 AND
`deleted` = 0
ORDER BY `position` ASC
LIMIT 0, 24;
Run Code Online (Sandbox Code Playgroud)
这个陈述也显示了具有price_notax等于的字段值的产品0,为什么?我说数字需要高于0......
任何帮助,将不胜感激.
SELECT *
FROM products
WHERE category in (3073, 3074) -- and so on
AND `active` = 1
AND `price_notax` > 0
AND `deleted` = 0
ORDER BY `position` -- ASC is by default
LIMIT 0, 24
Run Code Online (Sandbox Code Playgroud)
您的查询显示错误的结果,因为您使用OR AND,因此如果只有一个条件为真(例如,category = 3100),则显示它.