我有一个大客户数据库,其中客户表包含人员及其与组织的关系。人们可能属于多个组织(这允许组织内部的分区)。具有多个组织的人员必须具有默认组织,这通常由isDefault = T
决定,但前端应用程序也可以通过选择MIN(RowID)
来确定isDefault = F
的默认应用程序。SQL选择值='X'或最小值
因此,在表中我们知道PersonId
3
有一个默认的11
OrgID
(ISDEFAULT = T) 但是,我需要弄清楚查询查找是PersonID 12的默认。 即
Select orgId as default from myTable
where personID = 12
and isDefault = 'T'
如果0行返回然后执行这样的查询:
Select orgId as default from myTable
where personID = 12
and
RowId in (select Min(rowId)
from myTable
where PersonId = 12)
RowID | PersonID | OrgId | isDefault
1 | 12 | 14 | F
2 | 12 | 17 | F
3 | 3 | 11 | T
4 | 3 | 14 | F
什么是您的RDBMS? MySql,MS Sql,Oracle? – rcdmk 2012-07-14 01:21:06
MS SQL 2008.它是实际表的总结,但应该足以让某个人比我更聪明;-) – Xardax99 2012-07-14 01:26:31
@ Xardax99是否有可能有这样的一行? 5 | 3 | 17 | F ?我的意思是,如果'PersonID = 3'有2个OrgID(*,其中IsDefault = F *)会返回什么? – 2012-07-14 01:31:34