【发布时间】:2018-08-30 03:57:50
【问题描述】:
团队,
我有三张桌子。
myTransTable,myMasterTable 1, MymyMasterTable 2
myTransTable 有很多条目 'Rank.No' 的自动增量字段是为了识别单个记录。 'U.Name' 保存用户名。每个用户在这个表中可以有多条记录。但是用户最近的交易可以通过'U.Name'分组后Rank.No的最大值找到
一旦获取此最大记录,即最近的事务,它们的关联数据需要从其他表中获取
如何以最有效的方式做到这一点。
1.myTransTable(fields Rank.No(auto increment field),Name,RecNum,uname,date,type)
2.myMasterTable1 (RecNum,Recowner,recdate)
3.MymyMasterTable2 (uName,age,address,contact num)
我尝试了这些方法来选择最大记录并从其他表中获取相关数据
- 最大记录作为视图并使用普通查询从其他表中获取数据
- 最大记录和关联数据本身作为视图并根据需要选择数据
哪种方法可以缩短执行时间?
我的查询是找到最大值的最佳方法。
选项一
select a.`RecNum`,a.`Name`,a.`Date`, a.`type`"+
"from myTransTable a "+
"INNER JOIN "+
"(SELECT RecNumMAX(`Rank.No`) AS maxserialnum FROM myTransTable "+
"GROUP BY RecNumMAX)groupedRecNumMAX "+
" ON "+
" a.RecNum = groupedPWO.RecNum "+
"AND "+
"a.`Rank.No` = groupedRecNumMAX.maxserialnum "+
选项二
Select a.`RecNum`,a.`Name`,a.`Date`, a.`type`"+`
FROM from myTransTable a
WHERE s.`RecNum` in(select MAX(`RecNum`)
from myTransTable
group by RecNum)
【问题讨论】:
-
取决于执行计划..
-
您的第一个查询语法错误.. ?? RecNumMAX(
Rank.No)??