mysql - Mysql 获取包含匹配另一个条件的所有数据
问题描述
在使用某些包容性标准获取所有数据时,例如当列名等于“蓝色”或“黄色”且“颜色值”不等于“100”时
> mysql> select * from Colors where colorname is not null;
+-----------+----------+
| colorname | colorval |
+-----------+----------+
| blue | 100 |
| blue | 200 |
| blue | 300 |
| red | 200 |
| red | 300 |
| red | 100 |
| red | 400 |
| yellow | 100 |
| yellow | 200 |
| yellow | 300 |
+-----------+----------+
我希望结果是
>
+-----------+----------+
| colorname | colorval |
+-----------+----------+
| blue | 200 |
| blue | 300 |
| red | 200 |
| red | 300 |
| red | 100 |
| red | 400 |
| yellow | 200 |
| yellow | 300 |
+-----------+----------+
解决方案
这是需要的条件:
select * from colors
where colorname is not null and (colorval <> 100 or colorname not in ('blue', 'yellow'))
您需要的是 colorval 不等于 100 并且 colorname 不是同一行中的“blue”、“yellow”中的任何一个。
见演示。
结果:
| colorname | colorval |
| --------- | -------- |
| blue | 200 |
| blue | 300 |
| red | 200 |
| red | 300 |
| red | 100 |
| red | 400 |
| yellow | 200 |
| yellow | 300 |
如果你只有这 3 种颜色,你可以这样简化:
select * from colors
where colorname is not null and (colorval <> 100 or colorname = 'red')
推荐阅读
- sql - CURSOR 的使用会提高在 SQL 中使用 PIVOT 进行查询的性能/速度吗?
- python - Python Linux IBM Lotus Notes 9 - 导出数据库
- python - 如何使用 Python 从我的 CSV 文件生成嵌套的 JSON 数据
- c# - 外键部署到 SQL 服务器的问题 - 代码优先 - 空外键
- javascript - 在 base64 中发送更大的图像时,Nodemailer 崩溃
- git - 如何列出所有分支中每个作者的最新提交?
- vba - IBM MAXIMO:如何使用 REST API 从 PR 创建 PO
- java - 无法运行程序“AdoptOpenJDK\jdk-8.0.232.09-hotspot\jre\bin\java.exe”:CreateProcess 错误=206,文件名或扩展名太长
- node.js - RDS 管理控制台中显示的 sequelize 和连接中最大连接池大小的差异
- javascript - ES6中没有变量声明的对象解构赋值