sql - 选择 Query 获取与 SQL 中 where 条件匹配和不匹配的数据
问题描述
- 如果一个表总共有 1000 条记录
- 我需要总共 500 行匹配多个条件
- 在 N 个条件中,一个 Condition(A) 就像一个可选条件
- 如果只有50条记录符合所有N个条件,600条记录符合所有N-1个条件(A除外)
- 然后我需要从 SQL 中获取 50 +(600 条记录中的 450 条记录)的组合作为 500 条记录
- 不打算使用 LEFT JOIN,因为我们有一个包含大量数据的表
例子:
- 从上表中,我需要获得 4 个与 Course B.Tech 匹配且年龄在 25 岁以上的 ID
- 课程表是一个可选条件,因此我需要得到 1,2,3,5,6 作为结果
- 从这 6 行中,我需要获取 5 条记录,其中我无法消除 id 5,因为它匹配所有条件,而不是我可以消除除此之外的任何一条记录,因为其他记录仅匹配一个条件
解决方案
您将此条件添加到order by
子句中的 case 表达式中,从而确保首先获得这些记录:
SELECT TOP 500 *
FROM mytable
WHERE /* conditions */
ORDER BY CASE WHEN /* optional condition */ THEN 0 ELSE 1 END
推荐阅读
- intellij-idea - Cucumber 无法从 intelliJ 打开调试器端口
- python-3.x - Tkinter - 使列自动调整为最长的字段值
- fonts - KeyError:'组“font”和名称“color”的无法识别的键“font.color”'
- c++ - 直接用QPainter绘制和绘制QPixmap给出不同的结果
- python - 奇怪的修补行为
- git - 我的树被砍了
- swift - 遇到未知错误(CocoaPods 找不到 pod 的兼容版本
- php - 从私钥生成 CSR 密钥
- angular - 在 Angular 中动态加载组件
- javascript - 在框内水平移动垂直线