mysql - mysql查询-不在和/或之间的冲突
问题描述
我正在尝试从 A 特定类别中获取我所有的产品,并且没有这些类别中的某些产品。
我做了这个查询:
SELECT `ps_product`.`id_product`,`ps_product_lang`.`name`
FROM `ps_product`, `ps_product_lang`
WHERE
`ps_product`.`id_product` = `ps_product_lang`.`id_product`
AND `ps_product`.`id_manufacturer` NOT IN (3,7,10,11,13,14,19,22,23,24,25,30,31,32,33,34,37,38,41,42,43,44,45,46,47,48,49,50)
AND `ps_product_lang`.`name` not in ( '%OLP%' ,'%LicSAPk%' ,'%SPLA%','%SA OLP%')
问题是我仍然得到带有字符串“SPLA”或“SA OLP”的产品——因为 NOT IN 与类别冲突
如何解决?
解决方案
运算符IN
用于精确匹配一个值,而不是部分匹配一个值列表。所以你不能使用通配符,比如'%'
.
您必须LIKE
对每个值使用运算符:
AND `ps_product_lang`.`name` not like '%OLP%'
AND `ps_product_lang`.`name` not like '%LicSAPk%'
AND `ps_product_lang`.`name` not like '%SPLA%'
AND `ps_product_lang`.`name` not like '%SA OLP%'
推荐阅读
- wso2 - wso2 ei 660. 使用脚本中介时的严重 BUG
- python-3.x - 如何在 python3 中正确使用 mysql 连接器占位符 %S?
- c# - 如何获取已安装的 RAM 和 CPU 详细信息 c# .Net Core?
- sql - 将表与自身连接 SQL
- excel - 某些行的 countif 总和
- kubernetes - 没有资源请求/限制的 Kubernetes 部署
- cocoa - 将旧式视图(音频单元视图)合并到自动布局中
- python-3.x - 从 fetchall 输出中删除字符 - Python
- android - 如何在 Android 手机 GPU 上运行 TFLite 网络?
- nginx - Nginx 将旧的 PHP 网站 URL 重定向到新页面