我想做这样的事情:
SELECT *
FROM db.table
WHERE COUNT(someField) > 1
Run Code Online (Sandbox Code Playgroud)
我怎样才能在MySql中实现这一点?
OMG*_*ies 143
使用HAVING
,not WHERE
子句进行聚合结果比较.
以面值进行查询:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
Run Code Online (Sandbox Code Playgroud)
理想情况下,应该GROUP BY
在HAVING
子句中定义适当的估值,但MySQL确实允许来自GROUP BY的隐藏列 ...
这是为了准备一个独特的约束someField
吗?看起来应该是......
小智 16
SELECT username, numb from(
Select username, count(username) as numb from customers GROUP BY username ) as my_table
WHERE numb > 3
Run Code Online (Sandbox Code Playgroud)
Bil*_*win 14
你也可以通过自我加入来做到这一点:
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
Run Code Online (Sandbox Code Playgroud)
单程
SELECT t1.*
FROM db.table t1
WHERE exists
(SELECT *
FROM db.table t2
where t1.pk != t2.pk
and t1.someField = t2.someField)
Run Code Online (Sandbox Code Playgroud)
干得好:
SELECT Field1, COUNT(Field1)
FROM Table1
GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
260573 次 |
最近记录: |