我想选择那些帐户不处于持续状态的用户。
该表对于每个用户可能有多行。
订单表
CREATE TABLE `tbl_order` (
`iOrderID` int(11) NOT NULL AUTO_INCREMENT,
`iUserID` int(11) NOT NULL,
`invoice` varchar(255) NOT NULL,
`iTransactionID` varchar(255) NOT NULL,
`vOrderStatus` varchar(255) NOT NULL COMMENT 'ongoing, expired, free etc.',
);
描述
我们可以为用户提供多个条目。一次只能有一个状态。
订单编号|用户名|发票|交易编号|订单状态
5 1 INV5 T123333 Ongoing
4 1 INV4 T123333 expired
3 2 INV3 T123333 expired
2 3 INV2 T123333 expired
1 4 INV1 T123333 expired
输出应为
3 2 INV3 T123333 expired
2 3 INV2 T123333 expired
1 4 INV1 T123333 expired
最佳答案
您可以使用NOT EXISTS
:
SELECT *
FROM tbl_order o
WHERE NOT EXISTS(SELECT 1 FROM tbl_order
WHERE UserID = o.UserID
AND OrderStatus = 'Ongoing');