我需要在我的表上测试的是,给定的用户 ID 和订单 ID 在两个不同的日子里是否有行(时间戳的 DATETIME 字段)。
我很确定我需要一个有条款,这就是我在这里的原因......这让我非常害怕。
我需要在我的表上测试的是,给定的用户 ID 和订单 ID 在两个不同的日子里是否有行(时间戳的 DATETIME 字段)。
我很确定我需要一个有条款,这就是我在这里的原因......这让我非常害怕。
不应该吓到你,它只是聚合字段上的“位置”:
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
我不确定我是否理解你的问题,但这可能对你有用。HAVING 是您的朋友,您仍然可以使用 WHERE 子句。这应该让您知道表格中多次出现的订单和用户 ID 组合。
SELECT [UserId], [OrderId]
FROM OrderTable
WHERE UserId = @UserId
AND OrderId = @OrderId
GROUP BY UserId, OrderId
HAVING Count(*) > 1