我有一张看起来像这样的表:
+-------------+----------+---------------+------------+
| 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的记录)?
答案 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