我想选择那些帐户不处于持续状态的用户。

该表对于每个用户可能有多行。

订单表

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');

10-04 10:40