我的两张表如下:
Table 1 : Transaction
TRANS_ID (primary key), TRANS_DATE, TRANS_STATUS, USER_ID (Foreign_Key)
状态更改时,将重复相同的用户id
Table 2 : Users
USER_ID (Primary_Key), USER_NAME, USER_DOB, OTHER_INFO
我想获得用户信息以及最后的交易状态。
我熟悉以下问题。
SELECT MAX(Transaction.TRANS_DATE),Transaction.TRANS_STATUS, Users.USER_NAME, Users.USER_DOB
FROM Users
INNER_JOIN Transaction ON Transaction.USER_ID = Users.USER_ID
WHERE Transaction.USER_ID = @UserID
我通过了考试 UserID
与 Parameter.AddWithValue
. 不幸的是,此方法不返回 TRANS_STATUS
对于 MAX(TRANS_DATE)
. 它确实回来了 MAX(TRANS_DATE)
但是 TRANS_STATUS
是第一次出现,不是对应的 STATUS
至 MAX(TRANS_DATE)
记录。
请告诉我怎样才能拿到 TRANS_STATUS
对于 MAX(TRANS_DATE)
. 我更喜欢使用 INNER JOIN
但建议是值得赞赏的。
我仍然不能工作。
这是我的表格脚本。
CREATE TABLE `Transactions` (
`TRANS_ID` int(11) NOT NULL,
`TRANS_DATE` datetime NOT NULL,
`TRANS_STATUS` varchar(45) NOT NULL,
`USER_ID` int(11) NOT NULL,
PRIMARY KEY (`TRANS_ID`),
UNIQUE KEY `TRANS_ID_UNIQUE` (`TRANS_ID`),
KEY `USER_ID_idx` (`USER_ID`),
CONSTRAINT `USER_ID` FOREIGN KEY (`USER_ID`) REFERENCES `Users` (`USER_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `Users` (
`USER_ID` int(11) NOT NULL AUTO_INCREMENT,
`USER_NAME` varchar(45) NOT NULL,
`USER_DOB` datetime NOT NULL,
`OTHER_INFO` varchar(45) NOT NULL,
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `USER_ID_UNIQUE` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
4条答案
按热度按时间qltillow1#
如果我没弄错的话这对你有用
rjee0c152#
o7jaxewo3#
您可以在子查询中使用联接以获取max trans\u date
muk1a3rh4#
您可以使用last\u value函数