1

我对 SQL 相当生疏,因为我使用它已经有很长时间了,即使有,我也很少需要执行复杂的查询。

我有一个数据列如下的数据库:

Key, Instance, User ID, Day, Size

- 这是主键。
实例- 这是特定实例的描述符(这将是唯一的)。
用户 ID - 这将是指用户数量中的 1 个,其数量将少于此表中的条目数。
Day - 这是特定用户创建此实例的日期。它将是第 1 天或第 2 天之一。
大小- 这是存储数据的大小。

现在并非所有用户都会在 2 天内创建实例(尽管他们可能在任何一天都创建了多个实例)。

我正在查询将在第 1 天选择具有最大大小的实例,该用户 ID 也在第 2 天创建了一个实例。

我完全不知道从哪里开始。

我编写了一些 C# 代码来过滤从一个更简单的 SQL 查询返回的结果,但是它太慢了,无法给我想要的结果。

我是否希望从 SQL 中得到太多(即我所要求的是否可能)?如果是这样,任何人都可以给我一个这样的查询示例,并解释可能是复合查询的每个步骤正在做什么?

谢谢!

4

2 回答 2

3
SELECT Top 1 t1.*
FROM table t1
INNER JOIN table t2 on t1.UserID = t2.UserID AND t2.Day = 2
WHERE t1.Day = 1   
ORDER BY Size DESC

至于解释-您的表已连接到自身,因此结果将为具有两天活动的用户提供行。结果按大小降序排列,只返回第一行,应该是最大的。

于 2013-10-01T10:42:23.780 回答
1
Select Top 1 Key, Instance, UserId, Day, Size
From Table1 
Where UserId IN (Select UserId from Table1 where Day = 'Day 2') 
And Day = 'Day 1'
Order By Size asc
于 2013-10-01T10:38:49.817 回答