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

标签 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 行,不是不同的)出现更多的行比在表中一次。有没有一种方法可以在一个查询中执行该操作而无需返回到编程语言?

最佳答案

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

关于mysql - 如何选择给定数据出现在表中多行的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34032742/

相关文章:

php - 在 SQL Select 中返回零

mysql - Laravel 5.3 如何进行多重连接

mysql - 递归从父级获取所有子级

php - CakePHP - 根据 child 查找 parent

mysql - 如何根据 where 子句从两个表中进行选择

sql - 在索引/唯一字段上查询时使用 MySQL "LIMIT 1"有什么意义吗?

sql - 选择倒数第 n 个值

javascript - PHP 和 MYSQL 系统(加上 HTML,CSS&JS)

mysql - 选择一个表并连接 2 个不同的表

MySQL插入记录