查询以查找共享相同帐号的用户

时间:2013-07-22 18:20:25

标签: mysql

我目前正在学习mysql。我能够创建一个名为user的表(在下面引用)。每个用户都有一个唯一的ID。某些用户共享相同的帐号。我在编写一个查询时没有运气,该查询将显示共享相同帐号的用户的结果。我该怎么做呢?

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account` int(11) NOT NULL,
  `role` enum('default','admin','owner') NOT NULL DEFAULT 'default',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 

3 个答案:

答案 0 :(得分:2)

试试这个

 SELECT * FROM `user`
 WHERE account IN (SELECT account FROM user GROUP BY account HAVING COUNT(*)>1)

答案 1 :(得分:2)

select id, a.account from users u,
(select account from users
group by account
having count(*)>1) a
where u.account=a.account
order by u.account

答案 2 :(得分:0)

select a.id, b.id 
from users as a, users as b
where a.account=b.account and a.id < b.id;

这会找到共享帐户的用户对。

这有一些缺点:

  1. 只要M个人共享一个帐户,就有M *(M-1)/ 2个这样的对。
  2. 它表自联接,所以时间~O(N ^ 2)