left join 取一条数据

产品生产过程中要记录产品在制作过程中的不良历史,即使在一个工序,也可以产生多条不良历史记录,所有的不良信息保存在B表中。假设产品在打包工序,存放打包工序成品参数记录的表A,数据是唯一的。但在打包过程中,产生的不良信息,可以有多条。然而,产品在当天的工序报表中,产品的最终不良信息,只是取最终的一次记录为结果。使用关联查询A表,带出的B表信息,只需要最后一条。

1.先从B表中只获取最新的结果集

select * from AkBadInput a where Id=(select MAX(Id) from AkBadInput b where b.RepairKey=a.RepairKey and b.Barcode=a.Barcode and b.Process=a.Process)

2.通过关联上面的结果集,获取最新唯一的关联结果

select AkFqc.*,c.JudgeResult
from AkFqc left join
(select * from AkBadInput a where Id=(select MAX(Id) from AkBadInput b where b.RepairKey=a.RepairKey and b.Barcode=a.Barcode and b.Process=a.Process)) c
on AkFqc.Id=c.RepairKey and AkFqc.BarCode=c.Barcode and c.Process=‘FQC‘

时间: 2024-11-29 07:02:12

left join 取一条数据的相关文章

sql分组取第一条数据

sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * from table ) as temp where temp.rownum = 1

c# 对List<T> 某字段排序,取TOP条数据

//排序的对象里的字段数据准备 try { cmr.v4 = Double.Parse(cmr.v3) - Double.Parse(cmr.v2); } catch (Exception e) { }  cmjList.Add(cmr); //建立临时List<T> List<CModelJunction> cmjList_showtab = new List<CModelJunction>();//用于显示在右上表格中的junction 100条 //排序后取TOP

shell第一列相同即判断为重复,只取其中一条数据

例如 123456.txt内容如下 90115601,2137786735     36684 90115601,2137786735     36684 90118301,17751822       34898 90145133,2050186877     3847 90145133,2050186877     3847 90151825,3580430507     37974 90151825,3580430507     37974 90188754,2987861307    

Oracle的trunc和dbms_random.value随机取n条数据

今天在review项目代码的时候看到这样一个问题,有一张号码表,每次需要从这样表中随机取6个空闲的号码,也就是每次取出来的6个号码应该都会有所不同.然后我就看到了这样的SQL select   t.*     from   tel_number_tbl t    where   t.status = '空闲'      and   t.area_code = '0571'      and   t.delete_flg = '未删除'      and   rownum <= 6order by

lr参数化——500户并发迭代1次 循环取5条数据

lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuju5 想实现vuser1取shuju1,vuser2取shuju1,vuser3取shuju1,vuser4取shuju1,vuser5取shuju1..........vuser100取shuju1. vuser101取shuju2,vuser102取shuju2,vuser103取shuju2,

Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵--)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO ORDER BY

mysql5.7基础 limit 从第二条开始取三条数据

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜. 数据.数据,命根就在数据.操作数据库一定要谨慎小心.给最苦 这里的代码,看看就好,要有自己的判断.遇到抉择,要不耻上下问. mysql:5.7                     os:Windows7 x64 代码及效果 mysql> select * from t1; +------+-------+ | id | name

java 实现每次从list中取5000条数据放入新list

public static <T> List<List<T>> split(List<T> resList, int count) { if (resList == null || count < 1) return null; List<List<T>> ret = new ArrayList<List<T>>(); int size = resList.size(); if (size <= c

sql取第一条数据

在SQL Server数据库中,使用top关键字:        SELECT TOP number|percent column_name(s) FROM table_name        在MySQL数据库中,使用LIMIT关键字:        SELECT column_name(s) FROM table_name LIMIT number        例子:SELECT * FROM Persons LIMIT 1 在Oracle数据库中,使用ROWNUM关键字: SELECT