选择重复行,同时保留原始记录

时间:2013-11-30 00:26:03

标签: mysql

我写了一个看起来像这样的查询:

SELECT t.oid AS order_id, t.email 
FROM test AS t, `test-count` AS tc 
WHERE t.`email` = tc.`email`

输出如下内容:

ID  |  order_id  |   email
1        1          a@a.com
2        2          a@a.com
3        3          a@a.com
4        4          a@a.com
5        5          b@a.com
6        6          b@a.com
7        7          b@a.com
8        8          b@a.com

现在,我要做的是选择所有不是原始记录的记录。一个示例是最高ID 1ID 5是原始订单(两个订单都是电子邮件的第一个实例。我想忽略这些订单显示在我的查询中。

我正在尝试追踪并退还部分订单,但不想退还原始订单,只退还重复订单。

1 个答案:

答案 0 :(得分:0)

您可以添加一个非IN子句来排除最小结果:

SELECT t.oid AS order_id, t.email 
FROM test AS t, `test-count` AS tc 
WHERE t.`email` = tc.`email`
AND t.oid NOT IN (SELECT MIN(t2.oid)
                  FROM test t2
                  WHERE t2.email = t.email
                  )