0

我需要在我的表上测试的是,给定的用户 ID 和订单 ID 在两个不同的日子里是否有行(时间戳的 DATETIME 字段)。

我很确定我需要一个有条款,这就是我在这里的原因......这让我非常害怕。

4

2 回答 2

2

不应该吓到你,它只是聚合字段上的“位置”:

Select UserID, Count(*) From OrderTbl Group By UserID Having Count(*) > 1

这将为您提供拥有多个订单的所有用户。

Select UserID, Count(*) From OrderTbl Where (UserID=@UserID) Group By UserID Having Count(*) > 1 

如果@UserID 中的用户 ID 有多个记录,将为您提供计数,如果没有,则为 null。

if exists (Select UserID, Count(*) From OrderTbl Where (UserID=@UserID) Group By UserID 
             Having Count(*) > 1) Select 1 else Select 0

如果用户有多个记录,则返回 1,否则返回 0。

更新:没有意识到您每天可以有多个订单。此查询将执行您想要的操作:

With DistinctDates as (Select Distinct UserID, [DATE] From OrderTbl Where (UserID=@UserID))
Select UserID, Count(*) From DistinctDates  
Group By UserID Having Count(*) > 1 
于 2010-02-04T18:14:40.760 回答
0

我不确定我是否理解你的问题,但这可能对你有用。HAVING 是您的朋友,您仍然可以使用 WHERE 子句。这应该让您知道表格中多次出现的订单和用户 ID 组合。

SELECT [UserId], [OrderId]
FROM OrderTable 
WHERE UserId = @UserId
AND OrderId = @OrderId
GROUP BY UserId, OrderId
HAVING Count(*) > 1
于 2010-02-04T18:23:39.153 回答