Mysql 如何构造这个子查询?
我在mysql中有这个表-没有定义任何键Mysql 如何构造这个子查询?,mysql,sql,subquery,Mysql,Sql,Subquery,我在mysql中有这个表-没有定义任何键 Real Name : DB Field : Type | -----------------------|------------|------------| Patient ID : pid : varchar50 | White Blood Cell Count : wbc : int | Lab Date :
Real Name : DB Field : Type |
-----------------------|------------|------------|
Patient ID : pid : varchar50 |
White Blood Cell Count : wbc : int |
Lab Date : ldate : datetime |
-------------------------------------------------|
每个病人都做了10次实验室检查。这些测试在10天内完成。因此,对于一名患者,表中有10行(具有相同的pid),有10个“wbc”值及其实验室测试日期。在上表中,我想获得按“pid”分组的最小“wbc”计数的相应日期
按pid从tbl\U temp组中选择pid、min(wbc)、ldate
以上查询可以得到最小wbc,但不能得到同一行对应的日期。它只获取相关pid的日期列的第一个值
请帮助我为此编写一个组合查询。若要获取与最小值关联的数据,请连接到子查询。这里是总体思路
select fred, barney, mindate
from MyTable
join (
select wilma, min(datefield) mindate
from MyTable
group by Wilma ) temp on temp.Wilma = MyTable.Wilma
and datefield = mindate
你应该能够想出如何将这个概念融入你自己的情况。让我试着重申一下。。。对于每个患者,您需要最小白细胞计数。。。从最低的白细胞计数,你想知道发生的日期 首先从按患者分组的最低计数(分钟)开始。从这一点开始,每个患者重新连接到原始表,并获取具有该最低值的日期
select
yt2.pid,
yt2.wbc,
yt2.ldate
from
( select
yt1.pid,
min( yt1.wbc ) LowestWBCValue
from
YourTable yt1
group by
yt1.pid ) PreQuery
Join YourTable yt2
on PreQuery.pid = yt2.pid
AND PreQuery.LowestWBCValue = yt2.wbc
如果所有的基本原则都是用燧石来表达的,那么这个世界肯定会更幸福(如果有点混乱的话)。如果没有定义键,那么你就没有桌子了。在这种情况下,假设没有患者每天可以提交超过一个wbc,那么(pid、wbc、ldate)将是主键的合理候选。非常感谢DRapp。你成就了我的一天。@DasunChathuradha,不客气,作为一个新手,点击向上箭头可以找到帮助你解决问题的答案。对于那些真正的解决方案,在箭头下方有一个复选标记。这表明“这”是有效的解决方案。它还可以帮助其他人寻找类似的问题,以及做了什么工作。同时也标志着其他试图帮助的人不要去问已经解决的问题。