【发布时间】:2010-10-20 21:07:15
【问题描述】:
我有 2 个表 - 一个 Account 表和一个 Users 表。每个帐户可以有多个用户。我有一个场景,我想对这两个表执行一个查询/连接,但我想要所有的帐户数据 (Account.*) 和只有 first 组用户数据(特别是他们的名字)。
我不想在我的聚合组上做一个“最小”或“最大”,而是做一个“第一个”。但是,显然,TSQL 中没有“First”聚合函数。
关于如何获取此查询的任何建议?显然,很容易得到 Account x Users 的笛卡尔积:
SELECT User.Name, Account.* FROM Account, User
WHERE Account.ID = User.Account_ID
但是我怎么可能只根据他们的 User.ID 的顺序从产品中获取第一个用户呢?
【问题讨论】:
-
SQL Server 的情况更糟,因为它没有 FIRST。我还没有听到关于为什么它在 SQL Server 中不存在的令人信服的解释。有时它们的顺序无关紧要(如果它们在特定组的列中都具有相同的值),有时它会(并且它们是有序的)。无论哪种方式 FIRST() 都有用处。
标签: sql-server-2005 tsql aggregate-functions