`

为了 order by 构造子表查询

 
阅读更多

 公司的模拟机教员排班查询,

数据只需要从 SIM_TEACHER 表里面得到, 但是遇到了排序问题。

本来只需要根据 Teacher No 排序, 但是后来修改时 ,需要将 Teacher 数据删除,重新写入, 导致了Teacher No 混乱, 这下 ,可不能根据 Teacher No 排序了, 要找到排序字段, 需要关联到 SIM_TRAINING_SIM (SIM_TEACHER_ID), 再由 SIM_TRAINING_SIM 关联到 SIM_SUITE (SUITE_ID)  如图:

根据 SIM_SUITE 的 SUITE_NO , BATCH_NO 进行排序 。


如此多重的关联 , 而且, 考虑到将来跨套组的情况, 一个 SIM_TEACHER  还有可能对应到 多个 SIM_TRAINING_SIM ,这种情况下, 要取对应在 SIM_TRAINING_SIM 表里面的 SUITE_ID 最小值 如何设计 SQL  呢 ? 

 

搜索到关于 LEFT JOIN 最小值关联的帖子, 设计到了 SQL  :

 

 

    select 
 t.PILOT_ID as pilotId,
 p.pilot_name as pilotName,
 t.TEACHER_LOCK as teacherLock,
 d.unit_name as TUnitName
  from SIM_TEACHER  t inner join 
  flight.bd_aero_unit d on substr(t.t_unit,1,4)=d.unit_code
  left join 
  flight.pilot_basic_info p on p.basic_info_id = t.PILOT_ID join
(
select t.batch_no , t.suite_no , m.sim_teacher_id , min(m.suite_id) suite_id
from sim_suite t 
join sim_training_sim m on t.suite_id = m.suite_id
join sim_teacher      u on m.sim_teacher_id = u.sim_teacher_id
group by t.batch_no , t.suite_no , m.sim_teacher_id
) sort on
sort.sim_teacher_id = t.sim_teacher_id
order by sort.batch_no, sort.suite_no, t.t_unit

 

 

 

在这里 , 构造了子表  SORT , 并且根据 SUIT_ID  取得了最小的 。

 

测试结果显示 ,这样的排序完全符合要求 。

 

 

  • 大小: 74.5 KB
分享到:
评论

相关推荐

    MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码

    而`orderByAsc`方法与`orderBy`类似,也是用于升序排序,但它的存在是为了与`orderByDesc`保持一致,提高代码可读性。如果你习惯于使用`orderByAsc`,可以这样写: ```java List<User> users = userMapper.select...

    MySQL 通过索引优化含ORDER BY的语句

    MySQL数据库在处理含`ORDER BY`的SQL语句时,索引优化是非常关键的一环,因为这直接影响到查询性能。以下是一些关于如何利用索引来优化`ORDER BY`语句的知识点: 1. **合理创建索引**:索引可以显著提高数据读取...

    MySQL数据库:嵌套子查询一.pptx

    - 在子查询中不允许使用ORDER BY子句,ORDER BY应该用于外部查询,对最终结果进行排序。 3. **嵌套子查询的执行顺序**: - 子查询先于外部查询执行。子查询的结果被外部查询使用,作为筛选条件,从而决定外部查询...

    Delphi数据库多表查询组件

    4. **Order By支持**:可以设置查询结果的排序方式,根据需要选择升序或降序排列特定字段,这对于数据分析和展示尤为重要。 5. **日期和Like操作**:组件提供了处理日期和Like操作的便利,允许在查询中包含日期比较...

    SQLite数据表查询

    同时,对于复杂的查询,可能需要结合使用JOIN、WHERE子句、GROUP BY、HAVING等SQL元素来构造更复杂的查询语句。 标签"SQLite"表明了这个话题是关于SQLite数据库的,这包括但不限于创建表、插入数据、更新数据、删除...

    MSSQL高级方法-构造畸形语句

    这里同样使用了`union all`和`order by`来构造一个特殊的SQL查询,旨在获取管理员相关的表信息。 ### 四、关键技术点 1. **Union All**:该命令用于合并多个查询的结果集。在构造畸形SQL语句时,可以通过添加额外...

    connect by的使用探索

    [ WHERE condition ][ [ START WITH condition ] CONNECT BY condition [ ORDER SIBLINGS BY expression ] ] ``` 其中,`START WITH`子句用于指定查询的起始节点,`CONNECT BY`子句用于指定查询的递归条件。 ...

    QBC的各种查询

    6. **子查询**:DetachedCriteria支持创建子查询,可以嵌套在主查询中,以实现复杂的查询逻辑。 7. **动态查询**:QBC的动态性体现在可以根据运行时的参数灵活构造查询条件,非常适合在用户输入不确定的情况下构建...

    Laravel 使用查询构造器配合原生sql语句查询的例子

    然而,在处理某些复杂查询场景时,如多表联合查询、子查询或自定义SQL逻辑,可能需要结合使用查询构造器与原生SQL语句。下面我们将详细探讨如何在Laravel中结合两者进行查询。 首先,让我们了解一下Laravel查询构造...

    SQL编程之子查询及注意事项

    - 子查询不能包含ORDER BY子句,除非是在进行Top-N分析时。 - 子查询分为单行子查询(返回一行)和多行子查询(返回多行)。 - 单行子查询使用单行比较运算符,而多行子查询可能需要多行运算符。 5. **查询方法*...

    2022年关系数据库查询语言-SQL.ppt

    多表连接的 SQL 查询用于连接两个或更多的表,以便从多个表中检索数据。数据源之间的连接用关键词是“INNER JOIN… ON”,INNER JOIN 表示等值连接。 例如: FROM 学生基本信息表 INNER JOIN 成绩表 ON 成绩表....

    Orcale数据库全方面学习-第六课

    3. **ORDER BY 子句**:除非进行Top-N分析,否则不建议在子查询中使用ORDER BY子句。 4. **操作符的选择**:根据子查询返回的结果行数选择合适的操作符,单行子查询使用单行操作符(如`=`、`、`>`等),多行子查询则...

    hibernate里面的 两种查询

    - **优点**:HQL具有强大的功能,可以处理复杂的查询,包括关联查询、子查询和集合操作。同时,HQL支持动态查询,可以根据参数动态构造查询语句,适合于复杂或动态的查询需求。 - **基本结构**:HQL查询通常以`from...

    java语言的分页查询功能(mysql和sql server)

    2. 使用ROW_NUMBER()优化:在SQL Server中,使用`ROW_NUMBER()`结合子查询可以避免`OFFSET`的性能问题,尤其是在大数据量时。 3. 计算总页数:在Java中,通常需要计算总页数,可以通过单独查询获取总记录数再除以每...

    Oracle.Premium.1z0-071.by.VCEplus.69q.pdf

    - **A选项**:子查询可以有`ORDER BY`,但这通常用于`SELECT`子句中的子查询,而不是外部查询的`ORDER BY`。 - **B选项**:可以使用子查询作为临时表,即在`FROM`子句中嵌套一个查询来处理数据。 - **D选项**:子...

    使用sql语言查询大数据

    在处理大数据时,可以考虑先通过JOIN或子查询减少数据量,然后再排序。 此外,SQL还支持JOIN操作,用于合并来自多个表的数据。在大数据环境下,优化JOIN操作至关重要,可以使用物化视图、预计算或分布式JOIN策略来...

    SQL Server2005 查询技术

    在SQL Server 2005中,查询主要通过SELECT语句进行,该语句具有多个子句,包括ALL或DISTINCT、TOP、INTO、FROM、WHERE、GROUP BY、HAVING、ORDER BY、COMPUTE以及COMPUTE BY。这些子句共同构建了一个功能强大的查询...

    数据库MySQL-子查询

    总结来说,子查询在MySQL中是用于增强查询能力的关键构造,可以处理复杂的查询需求,如筛选满足特定条件的记录、获取最高/最低值、查找关联数据等。熟练掌握子查询能大大提高SQL编程的效率和灵活性,是数据库开发者...

Global site tag (gtag.js) - Google Analytics