我有一个包含客户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行,不是明显的)这样的行出现的更多比表中的一次。有没有办法在一个查询中执行该操作而无需返回编程语言?
答案 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