Sql 获取最大记录,即使其为空
我从用户事务表中获取最大事务记录,它有一个transactiontypeid,可以为null,一个用户可以有多个事务。如果最大事务记录为null,则我的查询不会返回该记录。 这是我的问题Sql 获取最大记录,即使其为空,sql,Sql,我从用户事务表中获取最大事务记录,它有一个transactiontypeid,可以为null,一个用户可以有多个事务。如果最大事务记录为null,则我的查询不会返回该记录。 这是我的问题 SELECT MAX([dbo].[UserTransaction].[UserTransactionId]) AS [UserTransactionId], [dbo].[UserTransaction].[Userid] AS [UserId] FROM [dbo].[UserTran
SELECT
MAX([dbo].[UserTransaction].[UserTransactionId]) AS [UserTransactionId],
[dbo].[UserTransaction].[Userid] AS [UserId]
FROM [dbo].[UserTransaction]
WHERE ( [dbo].[UserTransaction].[Userid] IN (2,3))
GROUP BY [dbo].[UserTransaction].[Userid]
这些是我的桌子
User Table
UserId
FirstName
LastName
UserTransaction Table
UserTransactionId
UserId
TransactionTypeId
LastModifiedDate
这是USerTransaction表中的记录
1 2 5 2014-09-26 02:00:21.487
2 3 4 2014-09-26 02:00:21.487
3 2 null 2014-09-27 02:00:21.487
4 3 null 2014-09-27 02:00:21.487
它应该返回记录3和4,但它返回的是在PostgreSQL 9.3和MS SQL Server 2012上测试的记录1和2:
CREATE TABLE UserTransaction (
UserTransactionId int,
UserId int,
TransactionTypeId int
);
简化的插入,因为我们不需要测试的日期,这里也从不使用您的用户表
INSERT INTO UserTransaction VALUES (1,2,5),(2,3,4),(3,2,null),(4,3,null);
现在我们使用
SELECT MAX(UserTransactionId), UserId FROM UserTransaction WHERE UserId IN (2,3) GROUP BY UserId;
当然,可以在此处输入WHERE子句,并正确打印结果:
max | UserId
-----+--------
4 | 3
3 | 2
这正是你想要的
这是给你自己看的
查询完全不依赖的空列无法更改您的结果。我的答案已在MS SQL Server 2012上测试后编辑。请记住在将来说明您的DBMS和版本:)