mysql 获取列中仅出现一次的值的数目

xytpbqjk  于 2022-12-03  发布在  Mysql
关注(0)|答案(6)|浏览(199)

首先,如果它是相关的,我使用MySQL,尽管我假设一个解决方案可以跨DB产品工作。
我有一个简单的表,只有一列。列上没有约束。在这一列中有一些简单的数据,例如。

a
a
b
c
d
d

我需要得到只出现一次的值的数量/计数。从上面的例子中,这将是2(因为只有b和c在列中出现一次)。
希望大家都清楚我不想要DISTINCT值,而想要UNIQUE值。实际上我以前已经这样做过,通过创建一个附加的表,在列上使用UNIQUE约束,然后简单地从旧表插入到新表,相应地处理重复的值。
我希望找到一个不需要临时表的解决方案,并且可以通过一个漂亮的SELECT来实现。

qpgpyjmq

qpgpyjmq1#

假设您的表名为T,字段名为F

SELECT COUNT(F)
FROM (
    SELECT F
    FROM T
    GROUP BY F
    HAVING COUNT(*) = 1
) AS ONLY_ONCE
o8x7eapl

o8x7eapl2#

select count(*) from 
(
  select
    col1, count(*)
  from 
    Table
  group by 
    Col1
  Having 
    Count(Col1) = 1
)
rryofs0p

rryofs0p3#

把它放进窝里。

select count( cnt ) from
( select count(mycol) cnt from mytab group by mycol )
where cnt = 1
vnzz0bqm

vnzz0bqm4#

select field1, count(field1) from my_table group by field1 having count(field1) = 1

select count(*) from (select field1, count(field1) from my_table group by field1 having count(field1) = 1)

第一个函数将返回唯一的元素,第二个函数将返回唯一元素的数量。

uujelgoq

uujelgoq5#

难道就这么简单:

Select count(*) From MyTable Group By MyColumn Where Count(MyColumn) = 1
cqoc49vn

cqoc49vn6#

这就是我所做的,它的工作:

SELECT name 
FROM people JOIN stars ON stars.person_id = people.id 
JOIN movies ON movies.id = stars.movie_id
WHERE year = 2004
GROUP BY name, person_id ORDER BY birth;

注意:我在这里使用了几个表。
CS50问题集7(pset 7)9.sql修复!!

相关问题