0

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

+-------------+----------+---------------+------------+
| 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 的记录)?

4

3 回答 3

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
于 2013-08-15T14:08:11.657 回答
0

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

于 2013-08-15T14:06:04.283 回答
0

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

    select distinct
    least(col1, col2) as value1
  , greatest(col1, col2) as value2
from yourtable
于 2013-08-15T14:08:38.737 回答