如何选择给定数据出现在表中多行中的行?

时间:2015-12-02 00:18:00

标签: mysql sql

我有一个包含客户ID和商品ID的交易表,我需要的是只选择客户购买多件商品的交易。

  transaction_id | client_id | item_id
  ---------------------------------------
  1              | 1         |  10
  2              | 1         |  11
  3              | 2         |  11
  4              | 3         |  11
  5              | 4         |  12
  6              | 4         |  12

所以这里将是事务ID:1,2,5,6,所以换句话说返回客户端ID(这里是1,4 - 但我仍然需要这4行,不是明显的)这样的行出现的更多比表中的一次。有没有办法在一个查询中执行该操作而无需返回编程语言?

2 个答案:

答案 0 :(得分:3)

SELECT *
FROM transaction t1
WHERE client_id in ( SELECT client_id 
                     FROM transaction t2
                     GROUP BY client_id 
                     HAVING count(*) > 1 )

答案 1 :(得分:2)

您可以自己加入表格

SELECT t1.transaction_id, t2.transaction_id, t1.client_id
FROM transaction t1, transaction t2
WHERE t1.transaction_id <> t2.transaction_id AND t1.client_id = t2.client_id