0

我有一个包含很多列、一个主键(icd_data_id)和一个外键(encounter_id)的数据库表。

我有一个应该只出现一次的特定标准,但由于过去的历史,我不能确定只有一个符合标准的记录,因此,我试图获得最后一个值。

我不知道如何用我的映射文件和查询来解决这个问题。这是映射文件中我的课程的一个子集。

 <class name="Surgery">
<id name="ID" column="icd_data_id" type="Int32">
  <generator class="identity"/>
</id>

<property name="EncounterID" column="event_id" type="int" />
<property name="SpongeCountDone" column="sponge_removed" type="AnsiString" />

<more attributes here, excluded for brevity>

<property name="Category" column="category" type="AnsiString" />
</class>

我想要得到的是具有 max(icd_data_id) 的行,其中 Category = 'XYZ' 和 EncounterID = 123。

我要查找的 Category 值将始终是静态的,但 EncounterID 将是我从该表中获取数据时将在代码中拥有的值。

如果我不清楚,在表中还有其他记录,其中 Category 不是 XYZ,并且每次遇到应该只有一个 Category = XYZ,但可能会有不止一个.

这里有人对如何编写三个标准有任何经验吗?

4

1 回答 1

1

在记事本中执行此操作,但它可能如下所示:

var results = session.CreateQuery("from Surgery p where Category='XYZ' and EncounterID=123 and p.icd_data_id in ( select max(p2.icd_data_id) from Surgery p2 group by p2.icd_data_id)")

于 2012-10-16T22:53:08.947 回答