如何选择两个字段唯一的记录

时间:2013-08-15 14:03:27

标签: mysql

我有一张看起来像这样的表:

+-------------+----------+---------------+------------+
| Contract_ID |   Name   |   Username    |  Password  |
+-------------+----------+---------------+------------+
|    12345671 | Facebook | john.doe      | password   |
|    12345672 | Google   | john.doe      | password   |
|    12345673 | Apple    | martha.malone | doodlebear |
|    12345674 | Samsung  | jimmy47       | parkour445 |
|    12345675 | HTC      | rick.grimes   | simpsons33 |
+-------------+----------+---------------+------------+

我只想选择用户名/密码组合与合同ID之间存在一对一比率的记录。在这种情况下,这意味着我想在此表中选择第3,第4和第5条记录。

我尝试过DISTINCT关键字的不同组合,但这似乎不是正确的路线。是否有可以返回此信息的查询?

作为一种奖励问题:是否存在可以产生相反结果的查询(即只有合同ID和用户名/密码组合之间的比率大于1比1的记录)?

3 个答案:

答案 0 :(得分:3)

您应该将GROUP BY子句与HAVING子句一起使用,例如:

SELECT Username, Password FROM Table
GROUP BY Username, Password
HAVING COUNT(*) = 1

相反的是:

SELECT Username, Password FROM Table
GROUP BY Username, Password
HAVING COUNT(*) > 1

答案 1 :(得分:0)

分组依据(名称,密码)不起作用?

答案 2 :(得分:0)

非常顽皮的做法,一点都不好,但它有效:

    select distinct
    least(col1, col2) as value1
  , greatest(col1, col2) as value2
from yourtable